#
# Copyright (c) 2018 Apple Inc. All rights reserved.
#
# @APPLE_APACHE_LICENSE_HEADER_START@
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @APPLE_APACHE_LICENSE_HEADER_END@
#

__dispatch_bug.last_seen
__dispatch_bug_deprecated.last_seen
__dispatch_bug_kevent_client.last_seen
__dispatch_bug_kevent_client.last_seen.37
__dispatch_bug_kevent_client.last_seen.39
__dispatch_bug_kevent_vanished.last_seen
__dispatch_bug_mach_client.last_seen

__dispatch_build_pred
__dispatch_build

__dispatch_child_of_unsafe_fork
__dispatch_continuation_cache_limit
__dispatch_data_empty
__dispatch_host_time_data.0
__dispatch_host_time_data.1
__dispatch_host_time_mach2nano
__dispatch_host_time_nano2mach
__dispatch_source_timer_use_telemetry
__dispatch_timers_force_max_leeway
__os_object_debug_missing_pools
_dispatch_benchmark_f.bdata
_dispatch_benchmark_f.pred
_dispatch_io_defaults
_dispatch_log_disabled
_dispatch_logfile

__dyld_private
