summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--ChangeLog6
-rw-r--r--README92
-rwxr-xr-xbootstrap7
-rw-r--r--configure.ac3
-rw-r--r--contrib/Makefile.am52
-rw-r--r--contrib/auditor-report.tex.j233
-rw-r--r--contrib/bad_gateway.en.must12
m---------contrib/gana0
-rwxr-xr-xcontrib/gana-update.sh2
-rw-r--r--contrib/kyc_user_failed.en.must20
-rw-r--r--contrib/persona-exchange-unauthorized.en.must (renamed from contrib/kyc_provider_unauthorized.en.must)0
-rw-r--r--contrib/persona-exchange-unpaid.en.must (renamed from contrib/kyc_provider_unpaid.en.must)0
-rw-r--r--contrib/persona-invalid-response.en.must (renamed from contrib/kyc_provider_unexpected_reply.en.must)4
-rw-r--r--contrib/persona-kyc-failed.en.must (renamed from contrib/kyc_failed.en.must)0
-rw-r--r--contrib/persona-load-failure.en.must (renamed from contrib/kyc_provider_ratelimit.en.must)0
-rw-r--r--contrib/persona-logic-failure.en.must (renamed from contrib/kyc_interaction_failed.en.must)0
-rw-r--r--contrib/persona-network-timeout.en.must (renamed from contrib/kyc_provider_timeout.en.must)0
-rw-r--r--contrib/persona-provider-failure.en.must (renamed from contrib/kyc_provider_internal_error.en.must)0
-rw-r--r--contrib/pp/conf.py.in (renamed from contrib/pp/conf.py)18
-rw-r--r--contrib/pp/en/0.epubbin14983 -> 0 bytes
-rw-r--r--contrib/pp/en/0.html211
-rw-r--r--contrib/pp/en/pp-v0.epubbin0 -> 14943 bytes
-rw-r--r--contrib/pp/en/pp-v0.html205
-rw-r--r--contrib/pp/en/pp-v0.pdf (renamed from contrib/pp/en/0.pdf)bin77445 -> 77785 bytes
-rw-r--r--contrib/pp/en/pp-v0.txt (renamed from contrib/pp/en/0.txt)0
-rw-r--r--contrib/pp/en/pp-v0.xml (renamed from contrib/pp/en/0.xml)2
-rw-r--r--contrib/pp/pp-v0.rst (renamed from contrib/pp/pp.rst)0
-rw-r--r--contrib/samples/wire-auditor.json6
-rwxr-xr-xcontrib/taler-bank-manage-testing16
-rw-r--r--contrib/tos/bfh-v0.rst (renamed from contrib/tos/bfh.rst)0
-rw-r--r--contrib/tos/conf.py.in (renamed from contrib/tos/conf.py)19
-rw-r--r--contrib/tos/en/0.html316
-rw-r--r--contrib/tos/en/bfh-v0.epub (renamed from contrib/tos/en/0.epub)bin24290 -> 24309 bytes
-rw-r--r--contrib/tos/en/bfh-v0.html310
-rw-r--r--contrib/tos/en/bfh-v0.pdf (renamed from contrib/tos/en/0.pdf)bin83662 -> 83658 bytes
-rw-r--r--contrib/tos/en/bfh-v0.txt (renamed from contrib/tos/en/0.txt)0
-rw-r--r--contrib/tos/en/bfh-v0.xml (renamed from contrib/tos/en/0.xml)2
-rw-r--r--contrib/tos/en/tos-v0.epubbin0 -> 24308 bytes
-rw-r--r--contrib/tos/en/tos-v0.html298
-rw-r--r--contrib/tos/en/tos-v0.pdfbin0 -> 82064 bytes
-rw-r--r--contrib/tos/en/tos-v0.txt337
-rw-r--r--contrib/tos/en/tos-v0.xml311
-rw-r--r--contrib/tos/tos-v0.rst (renamed from contrib/tos/tos.rst)0
-rwxr-xr-xcontrib/uncrustify_precommit2
-rwxr-xr-xcontrib/update-pp.sh10
-rwxr-xr-xcontrib/update-tos.sh11
-rw-r--r--debian/changelog12
-rw-r--r--debian/control48
-rw-r--r--debian/libtalerexchange-dev.install1
-rwxr-xr-xdebian/rules2
-rw-r--r--debian/taler-exchange.install3
-rw-r--r--debian/taler-exchange.taler-exchange-aggregator.service1
-rw-r--r--debian/taler-exchange.taler-exchange-closer.service1
-rw-r--r--debian/taler-exchange.taler-exchange-expire.service1
-rw-r--r--debian/taler-exchange.taler-exchange-transfer.service2
-rw-r--r--debian/taler-exchange.taler-exchange-wirewatch.service2
-rw-r--r--doc/Makefile.am7
-rw-r--r--doc/cs/content/4_2_specification.tex2
m---------doc/prebuilt0
-rw-r--r--doc/system/taler/implementation.tex2
-rw-r--r--src/Makefile.am3
-rw-r--r--src/auditor/.gitignore1
-rw-r--r--src/auditor/Makefile.am58
-rw-r--r--src/auditor/auditor-basedb-libeufin.sql140
-rw-r--r--src/auditor/auditor-basedb.age1
-rw-r--r--src/auditor/auditor-basedb.conf187
-rw-r--r--src/auditor/auditor-basedb.mpriv1
-rw-r--r--src/auditor/auditor-basedb.mpub1
-rw-r--r--src/auditor/auditor-basedb.sql15904
-rw-r--r--src/auditor/generate-auditor-basedb-template.conf1
-rw-r--r--src/auditor/generate-auditor-basedb.conf147
-rwxr-xr-xsrc/auditor/generate-auditor-basedb.sh342
-rwxr-xr-xsrc/auditor/generate-revoke-basedb.sh289
-rw-r--r--src/auditor/report-lib.c3
-rw-r--r--src/auditor/revoke-basedb-libeufin.sql161
-rw-r--r--src/auditor/revoke-basedb.age1
-rw-r--r--src/auditor/revoke-basedb.conf6
-rw-r--r--src/auditor/revoke-basedb.mpub1
-rw-r--r--src/auditor/revoke-basedb.sql15920
-rw-r--r--src/auditor/taler-auditor-httpd_deposit-confirmation.c6
-rw-r--r--src/auditor/taler-auditor-sync.c13
-rw-r--r--src/auditor/taler-auditor.in3
-rw-r--r--src/auditor/taler-helper-auditor-aggregation.c44
-rw-r--r--src/auditor/taler-helper-auditor-coins.c434
-rw-r--r--src/auditor/taler-helper-auditor-purses.c1400
-rw-r--r--src/auditor/taler-helper-auditor-render.py12
-rw-r--r--src/auditor/taler-helper-auditor-reserves.c1272
-rw-r--r--src/auditor/taler-helper-auditor-wire.c372
-rwxr-xr-xsrc/auditor/test-auditor.sh2288
-rwxr-xr-xsrc/auditor/test-revocation.sh723
-rwxr-xr-xsrc/auditor/test-sync.sh177
-rw-r--r--src/auditordb/9999.sql53
-rw-r--r--src/auditordb/Makefile.am63
-rw-r--r--src/auditordb/auditor-0001.sql89
-rw-r--r--src/auditordb/hdr.h0
-rw-r--r--src/auditordb/pg_del_reserve_info.c50
-rw-r--r--src/auditordb/pg_del_reserve_info.h43
-rw-r--r--src/auditordb/pg_delete_exchange.c47
-rw-r--r--src/auditordb/pg_delete_exchange.h43
-rw-r--r--src/auditordb/pg_delete_purse_info.c50
-rw-r--r--src/auditordb/pg_delete_purse_info.h44
-rw-r--r--src/auditordb/pg_get_auditor_progress_aggregation.c56
-rw-r--r--src/auditordb/pg_get_auditor_progress_aggregation.h43
-rw-r--r--src/auditordb/pg_get_auditor_progress_coin.c77
-rw-r--r--src/auditordb/pg_get_auditor_progress_coin.h43
-rw-r--r--src/auditordb/pg_get_auditor_progress_deposit_confirmation.c56
-rw-r--r--src/auditordb/pg_get_auditor_progress_deposit_confirmation.h43
-rw-r--r--src/auditordb/pg_get_auditor_progress_purse.c68
-rw-r--r--src/auditordb/pg_get_auditor_progress_purse.h44
-rw-r--r--src/auditordb/pg_get_auditor_progress_reserve.c77
-rw-r--r--src/auditordb/pg_get_auditor_progress_reserve.h43
-rw-r--r--src/auditordb/pg_get_balance_summary.c89
-rw-r--r--src/auditordb/pg_get_balance_summary.h43
-rw-r--r--src/auditordb/pg_get_denomination_balance.c72
-rw-r--r--src/auditordb/pg_get_denomination_balance.h43
-rw-r--r--src/auditordb/pg_get_deposit_confirmations.c185
-rw-r--r--src/auditordb/pg_get_deposit_confirmations.h48
-rw-r--r--src/auditordb/pg_get_predicted_balance.c61
-rw-r--r--src/auditordb/pg_get_predicted_balance.h44
-rw-r--r--src/auditordb/pg_get_purse_info.c66
-rw-r--r--src/auditordb/pg_get_purse_info.h49
-rw-r--r--src/auditordb/pg_get_purse_summary.c59
-rw-r--r--src/auditordb/pg_get_purse_summary.h43
-rw-r--r--src/auditordb/pg_get_reserve_info.c97
-rw-r--r--src/auditordb/pg_get_reserve_info.h51
-rw-r--r--src/auditordb/pg_get_reserve_summary.c88
-rw-r--r--src/auditordb/pg_get_reserve_summary.h43
-rw-r--r--src/auditordb/pg_get_wire_auditor_account_progress.c68
-rw-r--r--src/auditordb/pg_get_wire_auditor_account_progress.h48
-rw-r--r--src/auditordb/pg_get_wire_auditor_progress.c59
-rw-r--r--src/auditordb/pg_get_wire_auditor_progress.h44
-rw-r--r--src/auditordb/pg_get_wire_fee_summary.c64
-rw-r--r--src/auditordb/pg_get_wire_fee_summary.h43
-rw-r--r--src/auditordb/pg_helper.h130
-rw-r--r--src/auditordb/pg_insert_auditor_progress_aggregation.c51
-rw-r--r--src/auditordb/pg_insert_auditor_progress_aggregation.h45
-rw-r--r--src/auditordb/pg_insert_auditor_progress_coin.c65
-rw-r--r--src/auditordb/pg_insert_auditor_progress_coin.h44
-rw-r--r--src/auditordb/pg_insert_auditor_progress_deposit_confirmation.c51
-rw-r--r--src/auditordb/pg_insert_auditor_progress_deposit_confirmation.h44
-rw-r--r--src/auditordb/pg_insert_auditor_progress_purse.c59
-rw-r--r--src/auditordb/pg_insert_auditor_progress_purse.h44
-rw-r--r--src/auditordb/pg_insert_auditor_progress_reserve.c65
-rw-r--r--src/auditordb/pg_insert_auditor_progress_reserve.h43
-rw-r--r--src/auditordb/pg_insert_balance_summary.c77
-rw-r--r--src/auditordb/pg_insert_balance_summary.h44
-rw-r--r--src/auditordb/pg_insert_denomination_balance.c65
-rw-r--r--src/auditordb/pg_insert_denomination_balance.h45
-rw-r--r--src/auditordb/pg_insert_deposit_confirmation.c73
-rw-r--r--src/auditordb/pg_insert_deposit_confirmation.h42
-rw-r--r--src/auditordb/pg_insert_exchange.c49
-rw-r--r--src/auditordb/pg_insert_exchange.h43
-rw-r--r--src/auditordb/pg_insert_exchange_signkey.c58
-rw-r--r--src/auditordb/pg_insert_exchange_signkey.h41
-rw-r--r--src/auditordb/pg_insert_historic_denom_revenue.c62
-rw-r--r--src/auditordb/pg_insert_historic_denom_revenue.h52
-rw-r--r--src/auditordb/pg_insert_historic_reserve_revenue.c57
-rw-r--r--src/auditordb/pg_insert_historic_reserve_revenue.h47
-rw-r--r--src/auditordb/pg_insert_predicted_result.c56
-rw-r--r--src/auditordb/pg_insert_predicted_result.h46
-rw-r--r--src/auditordb/pg_insert_purse_info.c58
-rw-r--r--src/auditordb/pg_insert_purse_info.h47
-rw-r--r--src/auditordb/pg_insert_purse_summary.c54
-rw-r--r--src/auditordb/pg_insert_purse_summary.h45
-rw-r--r--src/auditordb/pg_insert_reserve_info.c84
-rw-r--r--src/auditordb/pg_insert_reserve_info.h50
-rw-r--r--src/auditordb/pg_insert_reserve_summary.c75
-rw-r--r--src/auditordb/pg_insert_reserve_summary.h45
-rw-r--r--src/auditordb/pg_insert_wire_auditor_account_progress.c61
-rw-r--r--src/auditordb/pg_insert_wire_auditor_account_progress.h48
-rw-r--r--src/auditordb/pg_insert_wire_auditor_progress.c53
-rw-r--r--src/auditordb/pg_insert_wire_auditor_progress.h45
-rw-r--r--src/auditordb/pg_insert_wire_fee_summary.c52
-rw-r--r--src/auditordb/pg_insert_wire_fee_summary.h44
-rw-r--r--src/auditordb/pg_list_exchanges.c126
-rw-r--r--src/auditordb/pg_list_exchanges.h43
-rw-r--r--src/auditordb/pg_select_historic_denom_revenue.c151
-rw-r--r--src/auditordb/pg_select_historic_denom_revenue.h46
-rw-r--r--src/auditordb/pg_select_historic_reserve_revenue.c144
-rw-r--r--src/auditordb/pg_select_historic_reserve_revenue.h45
-rw-r--r--src/auditordb/pg_select_purse_expired.c150
-rw-r--r--src/auditordb/pg_select_purse_expired.h45
-rw-r--r--src/auditordb/pg_template.c26
-rw-r--r--src/auditordb/pg_template.h29
-rwxr-xr-xsrc/auditordb/pg_template.sh21
-rw-r--r--src/auditordb/pg_update_auditor_progress_aggregation.c50
-rw-r--r--src/auditordb/pg_update_auditor_progress_aggregation.h44
-rw-r--r--src/auditordb/pg_update_auditor_progress_coin.c64
-rw-r--r--src/auditordb/pg_update_auditor_progress_coin.h44
-rw-r--r--src/auditordb/pg_update_auditor_progress_deposit_confirmation.c50
-rw-r--r--src/auditordb/pg_update_auditor_progress_deposit_confirmation.h45
-rw-r--r--src/auditordb/pg_update_auditor_progress_purse.c58
-rw-r--r--src/auditordb/pg_update_auditor_progress_purse.h44
-rw-r--r--src/auditordb/pg_update_auditor_progress_reserve.c64
-rw-r--r--src/auditordb/pg_update_auditor_progress_reserve.h43
-rw-r--r--src/auditordb/pg_update_balance_summary.c75
-rw-r--r--src/auditordb/pg_update_balance_summary.h44
-rw-r--r--src/auditordb/pg_update_denomination_balance.c62
-rw-r--r--src/auditordb/pg_update_denomination_balance.h45
-rw-r--r--src/auditordb/pg_update_predicted_result.c55
-rw-r--r--src/auditordb/pg_update_predicted_result.h46
-rw-r--r--src/auditordb/pg_update_purse_info.c55
-rw-r--r--src/auditordb/pg_update_purse_info.h47
-rw-r--r--src/auditordb/pg_update_purse_summary.c53
-rw-r--r--src/auditordb/pg_update_purse_summary.h45
-rw-r--r--src/auditordb/pg_update_reserve_info.c72
-rw-r--r--src/auditordb/pg_update_reserve_info.h48
-rw-r--r--src/auditordb/pg_update_reserve_summary.c69
-rw-r--r--src/auditordb/pg_update_reserve_summary.h45
-rw-r--r--src/auditordb/pg_update_wire_auditor_account_progress.c59
-rw-r--r--src/auditordb/pg_update_wire_auditor_account_progress.h49
-rw-r--r--src/auditordb/pg_update_wire_auditor_progress.c52
-rw-r--r--src/auditordb/pg_update_wire_auditor_progress.h45
-rw-r--r--src/auditordb/pg_update_wire_fee_summary.c51
-rw-r--r--src/auditordb/pg_update_wire_fee_summary.h44
-rw-r--r--src/auditordb/plugin_auditordb_postgres.c2921
-rw-r--r--src/auditordb/test_auditordb.c823
-rw-r--r--src/bank-lib/bank_api_admin.c7
-rw-r--r--src/bank-lib/bank_api_credit.c120
-rw-r--r--src/bank-lib/bank_api_debit.c124
-rw-r--r--src/bank-lib/fakebank.c205
-rw-r--r--src/bank-lib/taler-exchange-wire-gateway-client.c232
-rw-r--r--src/bank-lib/taler-fakebank-run.c29
-rw-r--r--src/benchmark/taler-aggregator-benchmark.c4
-rw-r--r--src/curl/curl.c28
-rw-r--r--src/exchange-tools/taler-crypto-worker.c1
-rw-r--r--src/exchange-tools/taler-exchange-dbinit.c74
-rw-r--r--src/exchange-tools/taler-exchange-offline.c231
-rw-r--r--src/exchange/Makefile.am4
-rw-r--r--src/exchange/exchange.conf4
-rw-r--r--src/exchange/taler-exchange-aggregator.c30
-rw-r--r--src/exchange/taler-exchange-closer.c109
-rw-r--r--src/exchange/taler-exchange-httpd.c53
-rw-r--r--src/exchange/taler-exchange-httpd.h10
-rw-r--r--src/exchange/taler-exchange-httpd_batch-deposit.c164
-rw-r--r--src/exchange/taler-exchange-httpd_batch-withdraw.c37
-rw-r--r--src/exchange/taler-exchange-httpd_common_deposit.c61
-rw-r--r--src/exchange/taler-exchange-httpd_csr.c45
-rw-r--r--src/exchange/taler-exchange-httpd_deposit.c124
-rw-r--r--src/exchange/taler-exchange-httpd_deposits_get.c8
-rw-r--r--src/exchange/taler-exchange-httpd_extensions.c271
-rw-r--r--src/exchange/taler-exchange-httpd_extensions.h15
-rw-r--r--src/exchange/taler-exchange-httpd_keys.c338
-rw-r--r--src/exchange/taler-exchange-httpd_keys.h115
-rw-r--r--src/exchange/taler-exchange-httpd_kyc-check.c134
-rw-r--r--src/exchange/taler-exchange-httpd_kyc-proof.c57
-rw-r--r--src/exchange/taler-exchange-httpd_kyc-proof.h2
-rw-r--r--src/exchange/taler-exchange-httpd_kyc-wallet.c24
-rw-r--r--src/exchange/taler-exchange-httpd_kyc-webhook.c47
-rw-r--r--src/exchange/taler-exchange-httpd_management_extensions.c48
-rw-r--r--src/exchange/taler-exchange-httpd_management_global_fees.c9
-rw-r--r--src/exchange/taler-exchange-httpd_management_post_keys.c3
-rw-r--r--src/exchange/taler-exchange-httpd_management_wire_fees.c3
-rw-r--r--src/exchange/taler-exchange-httpd_metrics.h3
-rw-r--r--src/exchange/taler-exchange-httpd_purses_create.c22
-rw-r--r--src/exchange/taler-exchange-httpd_purses_deposit.c2
-rw-r--r--src/exchange/taler-exchange-httpd_purses_get.c12
-rw-r--r--src/exchange/taler-exchange-httpd_purses_merge.c28
-rw-r--r--src/exchange/taler-exchange-httpd_refreshes_reveal.c39
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_attest.c389
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_attest.h41
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_close.c419
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_close.h41
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_get.c2
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_get_attest.c243
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_get_attest.h44
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_history.c2
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_history.h5
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_open.c469
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_open.h41
-rw-r--r--src/exchange/taler-exchange-httpd_reserves_purse.c52
-rw-r--r--src/exchange/taler-exchange-httpd_responses.c160
-rw-r--r--src/exchange/taler-exchange-httpd_responses.h4
-rw-r--r--src/exchange/taler-exchange-httpd_transfers_get.c1
-rw-r--r--src/exchange/taler-exchange-httpd_wire.c2
-rw-r--r--src/exchange/taler-exchange-httpd_withdraw.c21
-rw-r--r--src/exchange/taler-exchange-wirewatch.c930
-rw-r--r--src/exchangedb/.gitignore9
-rw-r--r--src/exchangedb/0002-account_merges.sql133
-rw-r--r--src/exchangedb/0002-aggregation_tracking.sql117
-rw-r--r--src/exchangedb/0002-aggregation_transient.sql72
-rw-r--r--src/exchangedb/0002-auditor_denom_sigs.sql32
-rw-r--r--src/exchangedb/0002-auditors.sql35
-rw-r--r--src/exchangedb/0002-close_requests.sql143
-rw-r--r--src/exchangedb/0002-contracts.sql109
-rw-r--r--src/exchangedb/0002-cs_nonce_locks.sql97
-rw-r--r--src/exchangedb/0002-denomination_revocations.sql23
-rw-r--r--src/exchangedb/0002-denominations.sql50
-rw-r--r--src/exchangedb/0002-deposits.sql427
-rw-r--r--src/exchangedb/0002-exchange_sign_keys.sql36
-rw-r--r--src/exchangedb/0002-extensions.sql27
-rw-r--r--src/exchangedb/0002-global_fee.sql40
-rw-r--r--src/exchangedb/0002-history_requests.sql99
-rw-r--r--src/exchangedb/0002-known_coins.sql137
-rw-r--r--src/exchangedb/0002-kyc_alerts.sql27
-rw-r--r--src/exchangedb/0002-legitimization_processes.sql129
-rw-r--r--src/exchangedb/0002-legitimization_requirements.sql97
-rw-r--r--src/exchangedb/0002-partner_accounts.sql33
-rw-r--r--src/exchangedb/0002-partners.sql49
-rw-r--r--src/exchangedb/0002-policy_details.sql59
-rw-r--r--src/exchangedb/0002-policy_fulfillments.sql35
-rw-r--r--src/exchangedb/0002-prewire.sql114
-rw-r--r--src/exchangedb/0002-profit_drains.sql43
-rw-r--r--src/exchangedb/0002-purse_decision.sql88
-rw-r--r--src/exchangedb/0002-purse_deposits.sql146
-rw-r--r--src/exchangedb/0002-purse_merges.sql152
-rw-r--r--src/exchangedb/0002-purse_requests.sql167
-rw-r--r--src/exchangedb/0002-recoup.sql248
-rw-r--r--src/exchangedb/0002-recoup_refresh.sql151
-rw-r--r--src/exchangedb/0002-refresh_commitments.sql131
-rw-r--r--src/exchangedb/0002-refresh_revealed_coins.sql163
-rw-r--r--src/exchangedb/0002-refresh_transfer_keys.sql127
-rw-r--r--src/exchangedb/0002-refunds.sql127
-rw-r--r--src/exchangedb/0002-reserves.sql148
-rw-r--r--src/exchangedb/0002-reserves_close.sql117
-rw-r--r--src/exchangedb/0002-reserves_in.sql123
-rw-r--r--src/exchangedb/0002-reserves_open_deposits.sql100
-rw-r--r--src/exchangedb/0002-reserves_open_requests.sql115
-rw-r--r--src/exchangedb/0002-reserves_out.sql240
-rw-r--r--src/exchangedb/0002-revolving_work_shards.sql46
-rw-r--r--src/exchangedb/0002-signkey_revocations.sql23
-rw-r--r--src/exchangedb/0002-wad_in_entries.sql188
-rw-r--r--src/exchangedb/0002-wad_out_entries.sql188
-rw-r--r--src/exchangedb/0002-wads_in.sql108
-rw-r--r--src/exchangedb/0002-wads_out.sql129
-rw-r--r--src/exchangedb/0002-wire_accounts.sql34
-rw-r--r--src/exchangedb/0002-wire_fee.sql36
-rw-r--r--src/exchangedb/0002-wire_out.sql131
-rw-r--r--src/exchangedb/0002-wire_targets.sql89
-rw-r--r--src/exchangedb/0002-work_shards.sql46
-rw-r--r--src/exchangedb/0003-purse_actions.sql74
-rw-r--r--src/exchangedb/0003-purse_deletion.sql94
-rw-r--r--src/exchangedb/Makefile.am243
-rw-r--r--src/exchangedb/bench-db-postgres.conf4
-rw-r--r--src/exchangedb/bench_db.c18
-rw-r--r--src/exchangedb/common-0001.sql2800
-rw-r--r--src/exchangedb/drop.sql1
-rw-r--r--src/exchangedb/exchange-0001-part.sql1467
-rw-r--r--src/exchangedb/exchange-0001.sql297
-rw-r--r--src/exchangedb/exchange-0002.sql.in75
-rw-r--r--src/exchangedb/exchange-0003.sql.in25
-rw-r--r--src/exchangedb/exchangedb-postgres.conf3
-rw-r--r--src/exchangedb/exchangedb.conf4
-rw-r--r--src/exchangedb/exchangedb_transactions.c31
-rw-r--r--src/exchangedb/perf_exchangedb_reserves_in_insert.c193
-rw-r--r--src/exchangedb/pg_abort_shard.c54
-rw-r--r--src/exchangedb/pg_abort_shard.h42
-rw-r--r--src/exchangedb/pg_activate_signing_key.c58
-rw-r--r--src/exchangedb/pg_activate_signing_key.h44
-rw-r--r--src/exchangedb/pg_add_denomination_key.c89
-rw-r--r--src/exchangedb/pg_add_denomination_key.h46
-rw-r--r--src/exchangedb/pg_add_policy_fulfillment_proof.c132
-rw-r--r--src/exchangedb/pg_add_policy_fulfillment_proof.h39
-rw-r--r--src/exchangedb/pg_aggregate.c205
-rw-r--r--src/exchangedb/pg_aggregate.h46
-rw-r--r--src/exchangedb/pg_batch_reserves_in_insert.c150
-rw-r--r--src/exchangedb/pg_batch_reserves_in_insert.h35
-rw-r--r--src/exchangedb/pg_begin_revolving_shard.c263
-rw-r--r--src/exchangedb/pg_begin_revolving_shard.h48
-rw-r--r--src/exchangedb/pg_begin_shard.c258
-rw-r--r--src/exchangedb/pg_begin_shard.h47
-rw-r--r--src/exchangedb/pg_commit.c58
-rw-r--r--src/exchangedb/pg_commit.h37
-rw-r--r--src/exchangedb/pg_complete_shard.c56
-rw-r--r--src/exchangedb/pg_complete_shard.h42
-rw-r--r--src/exchangedb/pg_compute_shard.c49
-rw-r--r--src/exchangedb/pg_compute_shard.h39
-rw-r--r--src/exchangedb/pg_count_known_coins.c63
-rw-r--r--src/exchangedb/pg_count_known_coins.h39
-rw-r--r--src/exchangedb/pg_create_aggregation_transient.c64
-rw-r--r--src/exchangedb/pg_create_aggregation_transient.h49
-rw-r--r--src/exchangedb/pg_create_tables.c73
-rw-r--r--src/exchangedb/pg_create_tables.h44
-rw-r--r--src/exchangedb/pg_delete_aggregation_transient.c52
-rw-r--r--src/exchangedb/pg_delete_aggregation_transient.h43
-rw-r--r--src/exchangedb/pg_delete_shard_locks.c42
-rw-r--r--src/exchangedb/pg_delete_shard_locks.h38
-rw-r--r--src/exchangedb/pg_do_batch_withdraw.c78
-rw-r--r--src/exchangedb/pg_do_batch_withdraw.h51
-rw-r--r--src/exchangedb/pg_do_batch_withdraw_insert.c77
-rw-r--r--src/exchangedb/pg_do_batch_withdraw_insert.h52
-rw-r--r--src/exchangedb/pg_do_deposit.c86
-rw-r--r--src/exchangedb/pg_do_deposit.h52
-rw-r--r--src/exchangedb/pg_do_melt.c82
-rw-r--r--src/exchangedb/pg_do_melt.h49
-rw-r--r--src/exchangedb/pg_do_purse_deposit.c82
-rw-r--r--src/exchangedb/pg_do_purse_deposit.h61
-rw-r--r--src/exchangedb/pg_do_purse_merge.c92
-rw-r--r--src/exchangedb/pg_do_purse_merge.h57
-rw-r--r--src/exchangedb/pg_do_recoup.c86
-rw-r--r--src/exchangedb/pg_do_recoup.h56
-rw-r--r--src/exchangedb/pg_do_recoup_refresh.c79
-rw-r--r--src/exchangedb/pg_do_recoup_refresh.h56
-rw-r--r--src/exchangedb/pg_do_refund.c90
-rw-r--r--src/exchangedb/pg_do_refund.h52
-rw-r--r--src/exchangedb/pg_do_reserve_open.c81
-rw-r--r--src/exchangedb/pg_do_reserve_open.h62
-rw-r--r--src/exchangedb/pg_do_reserve_purse.c109
-rw-r--r--src/exchangedb/pg_do_reserve_purse.h57
-rw-r--r--src/exchangedb/pg_do_withdraw.c86
-rw-r--r--src/exchangedb/pg_do_withdraw.h53
-rw-r--r--src/exchangedb/pg_drain_kyc_alert.c59
-rw-r--r--src/exchangedb/pg_drain_kyc_alert.h40
-rw-r--r--src/exchangedb/pg_drop_tables.c59
-rw-r--r--src/exchangedb/pg_drop_tables.h38
-rw-r--r--src/exchangedb/pg_ensure_coin_known.c159
-rw-r--r--src/exchangedb/pg_ensure_coin_known.h45
-rw-r--r--src/exchangedb/pg_event_listen.c53
-rw-r--r--src/exchangedb/pg_event_listen.h45
-rw-r--r--src/exchangedb/pg_event_listen_cancel.c37
-rw-r--r--src/exchangedb/pg_event_listen_cancel.h38
-rw-r--r--src/exchangedb/pg_event_notify.c41
-rw-r--r--src/exchangedb/pg_event_notify.h42
-rw-r--r--src/exchangedb/pg_expire_purse.c69
-rw-r--r--src/exchangedb/pg_expire_purse.h41
-rw-r--r--src/exchangedb/pg_find_aggregation_transient.c151
-rw-r--r--src/exchangedb/pg_find_aggregation_transient.h43
-rw-r--r--src/exchangedb/pg_gc.c80
-rw-r--r--src/exchangedb/pg_gc.h38
-rw-r--r--src/exchangedb/pg_get_coin_denomination.c71
-rw-r--r--src/exchangedb/pg_get_coin_denomination.h43
-rw-r--r--src/exchangedb/pg_get_coin_transactions.c951
-rw-r--r--src/exchangedb/pg_get_coin_transactions.h44
-rw-r--r--src/exchangedb/pg_get_denomination_info.c99
-rw-r--r--src/exchangedb/pg_get_denomination_info.h41
-rw-r--r--src/exchangedb/pg_get_denomination_revocation.c63
-rw-r--r--src/exchangedb/pg_get_denomination_revocation.h44
-rw-r--r--src/exchangedb/pg_get_drain_profit.c78
-rw-r--r--src/exchangedb/pg_get_drain_profit.h52
-rw-r--r--src/exchangedb/pg_get_expired_reserves.c174
-rw-r--r--src/exchangedb/pg_get_expired_reserves.h45
-rw-r--r--src/exchangedb/pg_get_extension_manifest.c68
-rw-r--r--src/exchangedb/pg_get_extension_manifest.h41
-rw-r--r--src/exchangedb/pg_get_global_fee.c91
-rw-r--r--src/exchangedb/pg_get_global_fee.h52
-rw-r--r--src/exchangedb/pg_get_global_fees.c175
-rw-r--r--src/exchangedb/pg_get_global_fees.h40
-rw-r--r--src/exchangedb/pg_get_known_coin.c71
-rw-r--r--src/exchangedb/pg_get_known_coin.h40
-rw-r--r--src/exchangedb/pg_get_link_data.c227
-rw-r--r--src/exchangedb/pg_get_link_data.h45
-rw-r--r--src/exchangedb/pg_get_melt.c128
-rw-r--r--src/exchangedb/pg_get_melt.h44
-rw-r--r--src/exchangedb/pg_get_old_coin_by_h_blind.c65
-rw-r--r--src/exchangedb/pg_get_old_coin_by_h_blind.h44
-rw-r--r--src/exchangedb/pg_get_policy_details.c65
-rw-r--r--src/exchangedb/pg_get_policy_details.h40
-rw-r--r--src/exchangedb/pg_get_purse_deposit.c85
-rw-r--r--src/exchangedb/pg_get_purse_deposit.h53
-rw-r--r--src/exchangedb/pg_get_purse_request.c83
-rw-r--r--src/exchangedb/pg_get_purse_request.h57
-rw-r--r--src/exchangedb/pg_get_ready_deposit.c82
-rw-r--r--src/exchangedb/pg_get_ready_deposit.h46
-rw-r--r--src/exchangedb/pg_get_refresh_reveal.c214
-rw-r--r--src/exchangedb/pg_get_refresh_reveal.h44
-rw-r--r--src/exchangedb/pg_get_reserve_balance.c55
-rw-r--r--src/exchangedb/pg_get_reserve_balance.h40
-rw-r--r--src/exchangedb/pg_get_reserve_by_h_blind.c63
-rw-r--r--src/exchangedb/pg_get_reserve_by_h_blind.h44
-rw-r--r--src/exchangedb/pg_get_reserve_history.c1178
-rw-r--r--src/exchangedb/pg_get_reserve_history.h67
-rw-r--r--src/exchangedb/pg_get_unfinished_close_requests.c167
-rw-r--r--src/exchangedb/pg_get_unfinished_close_requests.h46
-rw-r--r--src/exchangedb/pg_get_wire_accounts.c129
-rw-r--r--src/exchangedb/pg_get_wire_accounts.h42
-rw-r--r--src/exchangedb/pg_get_wire_fee.c78
-rw-r--r--src/exchangedb/pg_get_wire_fee.h49
-rw-r--r--src/exchangedb/pg_get_wire_fees.c150
-rw-r--r--src/exchangedb/pg_get_wire_fees.h44
-rw-r--r--src/exchangedb/pg_get_withdraw_info.c85
-rw-r--r--src/exchangedb/pg_get_withdraw_info.h43
-rw-r--r--src/exchangedb/pg_have_deposit2.c120
-rw-r--r--src/exchangedb/pg_have_deposit2.h53
-rw-r--r--src/exchangedb/pg_helper.h166
-rw-r--r--src/exchangedb/pg_insert_aggregation_tracking.c54
-rw-r--r--src/exchangedb/pg_insert_aggregation_tracking.h43
-rw-r--r--src/exchangedb/pg_insert_auditor.c58
-rw-r--r--src/exchangedb/pg_insert_auditor.h45
-rw-r--r--src/exchangedb/pg_insert_auditor_denom_sig.c61
-rw-r--r--src/exchangedb/pg_insert_auditor_denom_sig.h43
-rw-r--r--src/exchangedb/pg_insert_close_request.c68
-rw-r--r--src/exchangedb/pg_insert_close_request.h52
-rw-r--r--src/exchangedb/pg_insert_contract.c93
-rw-r--r--src/exchangedb/pg_insert_contract.h47
-rw-r--r--src/exchangedb/pg_insert_denomination_info.c101
-rw-r--r--src/exchangedb/pg_insert_denomination_info.h42
-rw-r--r--src/exchangedb/pg_insert_denomination_revocation.c54
-rw-r--r--src/exchangedb/pg_insert_denomination_revocation.h42
-rw-r--r--src/exchangedb/pg_insert_deposit.c106
-rw-r--r--src/exchangedb/pg_insert_deposit.h40
-rw-r--r--src/exchangedb/pg_insert_drain_profit.c64
-rw-r--r--src/exchangedb/pg_insert_drain_profit.h50
-rw-r--r--src/exchangedb/pg_insert_global_fee.c137
-rw-r--r--src/exchangedb/pg_insert_global_fee.h50
-rw-r--r--src/exchangedb/pg_insert_history_request.c66
-rw-r--r--src/exchangedb/pg_insert_history_request.h53
-rw-r--r--src/exchangedb/pg_insert_kyc_requirement_for_account.c62
-rw-r--r--src/exchangedb/pg_insert_kyc_requirement_for_account.h44
-rw-r--r--src/exchangedb/pg_insert_kyc_requirement_process.c75
-rw-r--r--src/exchangedb/pg_insert_kyc_requirement_process.h48
-rw-r--r--src/exchangedb/pg_insert_partner.c70
-rw-r--r--src/exchangedb/pg_insert_partner.h51
-rw-r--r--src/exchangedb/pg_insert_purse_request.c126
-rw-r--r--src/exchangedb/pg_insert_purse_request.h61
-rw-r--r--src/exchangedb/pg_insert_records_by_table.c (renamed from src/exchangedb/irbt_callbacks.c)918
-rw-r--r--src/exchangedb/pg_insert_records_by_table.h43
-rw-r--r--src/exchangedb/pg_insert_refresh_reveal.c94
-rw-r--r--src/exchangedb/pg_insert_refresh_reveal.h51
-rw-r--r--src/exchangedb/pg_insert_refund.c66
-rw-r--r--src/exchangedb/pg_insert_refund.h38
-rw-r--r--src/exchangedb/pg_insert_reserve_closed.c114
-rw-r--r--src/exchangedb/pg_insert_reserve_closed.h51
-rw-r--r--src/exchangedb/pg_insert_reserve_open_deposit.c66
-rw-r--r--src/exchangedb/pg_insert_reserve_open_deposit.h54
-rw-r--r--src/exchangedb/pg_insert_signkey_revocation.c53
-rw-r--r--src/exchangedb/pg_insert_signkey_revocation.h41
-rw-r--r--src/exchangedb/pg_insert_wire.c56
-rw-r--r--src/exchangedb/pg_insert_wire.h44
-rw-r--r--src/exchangedb/pg_insert_wire_fee.c108
-rw-r--r--src/exchangedb/pg_insert_wire_fee.h46
-rw-r--r--src/exchangedb/pg_iterate_active_auditors.c123
-rw-r--r--src/exchangedb/pg_iterate_active_auditors.h41
-rw-r--r--src/exchangedb/pg_iterate_active_signkeys.c144
-rw-r--r--src/exchangedb/pg_iterate_active_signkeys.h43
-rw-r--r--src/exchangedb/pg_iterate_auditor_denominations.c121
-rw-r--r--src/exchangedb/pg_iterate_auditor_denominations.h44
-rw-r--r--src/exchangedb/pg_iterate_denomination_info.c186
-rw-r--r--src/exchangedb/pg_iterate_denomination_info.h41
-rw-r--r--src/exchangedb/pg_iterate_denominations.c177
-rw-r--r--src/exchangedb/pg_iterate_denominations.h44
-rw-r--r--src/exchangedb/pg_iterate_kyc_reference.c129
-rw-r--r--src/exchangedb/pg_iterate_kyc_reference.h46
-rw-r--r--src/exchangedb/pg_iterate_reserve_close_info.c129
-rw-r--r--src/exchangedb/pg_iterate_reserve_close_info.h49
-rw-r--r--src/exchangedb/pg_kyc_provider_account_lookup.c65
-rw-r--r--src/exchangedb/pg_kyc_provider_account_lookup.h47
-rw-r--r--src/exchangedb/pg_lookup_auditor_status.c61
-rw-r--r--src/exchangedb/pg_lookup_auditor_status.h44
-rw-r--r--src/exchangedb/pg_lookup_auditor_timestamp.c57
-rw-r--r--src/exchangedb/pg_lookup_auditor_timestamp.h41
-rw-r--r--src/exchangedb/pg_lookup_denomination_key.c88
-rw-r--r--src/exchangedb/pg_lookup_denomination_key.h41
-rw-r--r--src/exchangedb/pg_lookup_global_fee_by_time.c185
-rw-r--r--src/exchangedb/pg_lookup_global_fee_by_time.h51
-rw-r--r--src/exchangedb/pg_lookup_kyc_process_by_account.c78
-rw-r--r--src/exchangedb/pg_lookup_kyc_process_by_account.h50
-rw-r--r--src/exchangedb/pg_lookup_kyc_requirement_by_row.c60
-rw-r--r--src/exchangedb/pg_lookup_kyc_requirement_by_row.h44
-rw-r--r--src/exchangedb/pg_lookup_records_by_table.c (renamed from src/exchangedb/lrbt_callbacks.c)817
-rw-r--r--src/exchangedb/pg_lookup_records_by_table.h49
-rw-r--r--src/exchangedb/pg_lookup_serial_by_table.c406
-rw-r--r--src/exchangedb/pg_lookup_serial_by_table.h45
-rw-r--r--src/exchangedb/pg_lookup_signing_key.c65
-rw-r--r--src/exchangedb/pg_lookup_signing_key.h42
-rw-r--r--src/exchangedb/pg_lookup_signkey_revocation.c61
-rw-r--r--src/exchangedb/pg_lookup_signkey_revocation.h42
-rw-r--r--src/exchangedb/pg_lookup_transfer_by_deposit.c203
-rw-r--r--src/exchangedb/pg_lookup_transfer_by_deposit.h61
-rw-r--r--src/exchangedb/pg_lookup_wire_fee_by_time.c158
-rw-r--r--src/exchangedb/pg_lookup_wire_fee_by_time.h76
-rw-r--r--src/exchangedb/pg_lookup_wire_timestamp.c56
-rw-r--r--src/exchangedb/pg_lookup_wire_timestamp.h40
-rw-r--r--src/exchangedb/pg_lookup_wire_transfer.c188
-rw-r--r--src/exchangedb/pg_lookup_wire_transfer.h45
-rw-r--r--src/exchangedb/pg_persist_policy_details.c67
-rw-r--r--src/exchangedb/pg_persist_policy_details.h45
-rw-r--r--src/exchangedb/pg_preflight.c75
-rw-r--r--src/exchangedb/pg_preflight.h44
-rw-r--r--src/exchangedb/pg_profit_drains_get_pending.c79
-rw-r--r--src/exchangedb/pg_profit_drains_get_pending.h52
-rw-r--r--src/exchangedb/pg_profit_drains_set_finished.c55
-rw-r--r--src/exchangedb/pg_profit_drains_set_finished.h40
-rw-r--r--src/exchangedb/pg_release_revolving_shard.c59
-rw-r--r--src/exchangedb/pg_release_revolving_shard.h44
-rw-r--r--src/exchangedb/pg_reserves_get.c61
-rw-r--r--src/exchangedb/pg_reserves_get.h40
-rw-r--r--src/exchangedb/pg_reserves_get_origin.c57
-rw-r--r--src/exchangedb/pg_reserves_get_origin.h41
-rw-r--r--src/exchangedb/pg_reserves_in_insert.c295
-rw-r--r--src/exchangedb/pg_reserves_in_insert.h51
-rw-r--r--src/exchangedb/pg_reserves_update.c53
-rw-r--r--src/exchangedb/pg_reserves_update.h40
-rw-r--r--src/exchangedb/pg_rollback.c52
-rw-r--r--src/exchangedb/pg_rollback.h36
-rw-r--r--src/exchangedb/pg_select_account_merges_above_serial_id.c194
-rw-r--r--src/exchangedb/pg_select_account_merges_above_serial_id.h46
-rw-r--r--src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.c158
-rw-r--r--src/exchangedb/pg_select_aggregation_amounts_for_kyc_check.h47
-rw-r--r--src/exchangedb/pg_select_aggregation_transient.c67
-rw-r--r--src/exchangedb/pg_select_aggregation_transient.h47
-rw-r--r--src/exchangedb/pg_select_all_purse_decisions_above_serial_id.c146
-rw-r--r--src/exchangedb/pg_select_all_purse_decisions_above_serial_id.h47
-rw-r--r--src/exchangedb/pg_select_auditor_denom_sig.c67
-rw-r--r--src/exchangedb/pg_select_auditor_denom_sig.h43
-rw-r--r--src/exchangedb/pg_select_contract.c66
-rw-r--r--src/exchangedb/pg_select_contract.h47
-rw-r--r--src/exchangedb/pg_select_contract_by_purse.c63
-rw-r--r--src/exchangedb/pg_select_contract_by_purse.h42
-rw-r--r--src/exchangedb/pg_select_deposits_above_serial_id.c197
-rw-r--r--src/exchangedb/pg_select_deposits_above_serial_id.h44
-rw-r--r--src/exchangedb/pg_select_deposits_missing_wire.c176
-rw-r--r--src/exchangedb/pg_select_deposits_missing_wire.h46
-rw-r--r--src/exchangedb/pg_select_history_requests_above_serial_id.c159
-rw-r--r--src/exchangedb/pg_select_history_requests_above_serial_id.h44
-rw-r--r--src/exchangedb/pg_select_merge_amounts_for_kyc_check.c160
-rw-r--r--src/exchangedb/pg_select_merge_amounts_for_kyc_check.h47
-rw-r--r--src/exchangedb/pg_select_purse.c83
-rw-r--r--src/exchangedb/pg_select_purse.h54
-rw-r--r--src/exchangedb/pg_select_purse_by_merge_pub.c83
-rw-r--r--src/exchangedb/pg_select_purse_by_merge_pub.h54
-rw-r--r--src/exchangedb/pg_select_purse_decisions_above_serial_id.c164
-rw-r--r--src/exchangedb/pg_select_purse_decisions_above_serial_id.h46
-rw-r--r--src/exchangedb/pg_select_purse_deposits_above_serial_id.c204
-rw-r--r--src/exchangedb/pg_select_purse_deposits_above_serial_id.h47
-rw-r--r--src/exchangedb/pg_select_purse_deposits_by_purse.c153
-rw-r--r--src/exchangedb/pg_select_purse_deposits_by_purse.h44
-rw-r--r--src/exchangedb/pg_select_purse_merge.c74
-rw-r--r--src/exchangedb/pg_select_purse_merge.h49
-rw-r--r--src/exchangedb/pg_select_purse_merges_above_serial_id.c192
-rw-r--r--src/exchangedb/pg_select_purse_merges_above_serial_id.h46
-rw-r--r--src/exchangedb/pg_select_purse_requests_above_serial_id.c179
-rw-r--r--src/exchangedb/pg_select_purse_requests_above_serial_id.h47
-rw-r--r--src/exchangedb/pg_select_recoup_above_serial_id.c196
-rw-r--r--src/exchangedb/pg_select_recoup_above_serial_id.h44
-rw-r--r--src/exchangedb/pg_select_recoup_refresh_above_serial_id.c207
-rw-r--r--src/exchangedb/pg_select_recoup_refresh_above_serial_id.h45
-rw-r--r--src/exchangedb/pg_select_refreshes_above_serial_id.c185
-rw-r--r--src/exchangedb/pg_select_refreshes_above_serial_id.h45
-rw-r--r--src/exchangedb/pg_select_refunds_above_serial_id.c211
-rw-r--r--src/exchangedb/pg_select_refunds_above_serial_id.h45
-rw-r--r--src/exchangedb/pg_select_refunds_by_coin.c159
-rw-r--r--src/exchangedb/pg_select_refunds_by_coin.h47
-rw-r--r--src/exchangedb/pg_select_reserve_close_info.c63
-rw-r--r--src/exchangedb/pg_select_reserve_close_info.h49
-rw-r--r--src/exchangedb/pg_select_reserve_closed_above_serial_id.c180
-rw-r--r--src/exchangedb/pg_select_reserve_closed_above_serial_id.h47
-rw-r--r--src/exchangedb/pg_select_reserve_open_above_serial_id.c169
-rw-r--r--src/exchangedb/pg_select_reserve_open_above_serial_id.h47
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id.c167
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id.h44
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.c169
-rw-r--r--src/exchangedb/pg_select_reserves_in_above_serial_id_by_account.h46
-rw-r--r--src/exchangedb/pg_select_satisfied_kyc_processes.c152
-rw-r--r--src/exchangedb/pg_select_satisfied_kyc_processes.h47
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id.c159
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id.h45
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id_by_account.c162
-rw-r--r--src/exchangedb/pg_select_wire_out_above_serial_id_by_account.h46
-rw-r--r--src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.c158
-rw-r--r--src/exchangedb/pg_select_withdraw_amounts_for_kyc_check.h47
-rw-r--r--src/exchangedb/pg_select_withdrawals_above_serial_id.c175
-rw-r--r--src/exchangedb/pg_select_withdrawals_above_serial_id.h44
-rw-r--r--src/exchangedb/pg_set_extension_manifest.c56
-rw-r--r--src/exchangedb/pg_set_extension_manifest.h43
-rw-r--r--src/exchangedb/pg_set_purse_balance.c55
-rw-r--r--src/exchangedb/pg_set_purse_balance.h43
-rw-r--r--src/exchangedb/pg_setup_wire_target.c54
-rw-r--r--src/exchangedb/pg_setup_wire_target.h43
-rw-r--r--src/exchangedb/pg_start.c57
-rw-r--r--src/exchangedb/pg_start.h40
-rw-r--r--src/exchangedb/pg_start_deferred_wire_out.c59
-rw-r--r--src/exchangedb/pg_start_deferred_wire_out.h39
-rw-r--r--src/exchangedb/pg_start_read_committed.c56
-rw-r--r--src/exchangedb/pg_start_read_committed.h39
-rw-r--r--src/exchangedb/pg_start_read_only.c57
-rw-r--r--src/exchangedb/pg_start_read_only.h40
-rw-r--r--src/exchangedb/pg_store_wire_transfer_out.c63
-rw-r--r--src/exchangedb/pg_store_wire_transfer_out.h48
-rw-r--r--src/exchangedb/pg_template.c26
-rw-r--r--src/exchangedb/pg_template.h29
-rwxr-xr-xsrc/exchangedb/pg_template.sh21
-rw-r--r--src/exchangedb/pg_update_aggregation_transient.c60
-rw-r--r--src/exchangedb/pg_update_aggregation_transient.h46
-rw-r--r--src/exchangedb/pg_update_auditor.c59
-rw-r--r--src/exchangedb/pg_update_auditor.h47
-rw-r--r--src/exchangedb/pg_update_kyc_process_by_row.c101
-rw-r--r--src/exchangedb/pg_update_kyc_process_by_row.h51
-rw-r--r--src/exchangedb/pg_update_wire.c54
-rw-r--r--src/exchangedb/pg_update_wire.h43
-rw-r--r--src/exchangedb/pg_wire_prepare_data_get.c142
-rw-r--r--src/exchangedb/pg_wire_prepare_data_get.h45
-rw-r--r--src/exchangedb/pg_wire_prepare_data_insert.c54
-rw-r--r--src/exchangedb/pg_wire_prepare_data_insert.h42
-rw-r--r--src/exchangedb/pg_wire_prepare_data_mark_failed.c50
-rw-r--r--src/exchangedb/pg_wire_prepare_data_mark_failed.h39
-rw-r--r--src/exchangedb/pg_wire_prepare_data_mark_finished.c49
-rw-r--r--src/exchangedb/pg_wire_prepare_data_mark_finished.h39
-rw-r--r--src/exchangedb/plugin_exchangedb_common.c61
-rw-r--r--src/exchangedb/plugin_exchangedb_common.h51
-rw-r--r--src/exchangedb/plugin_exchangedb_postgres.c13485
-rw-r--r--src/exchangedb/procedures.sql767
-rw-r--r--src/exchangedb/shard-0001-part.sql117
-rw-r--r--src/exchangedb/shard-0002.sql.in (renamed from src/exchangedb/exchange-0001.sql.in)6
-rw-r--r--src/exchangedb/test-exchange-db-postgres.conf5
-rw-r--r--src/exchangedb/test_exchangedb.c112
-rw-r--r--src/exchangedb/test_exchangedb_by_j.c198
-rw-r--r--src/extensions/Makefile.am5
-rw-r--r--src/extensions/age_restriction/Makefile.am33
-rw-r--r--src/extensions/age_restriction/age_restriction.c258
-rw-r--r--src/extensions/age_restriction_helper.c73
-rw-r--r--src/extensions/extension_age_restriction.c403
-rw-r--r--src/extensions/extensions.c236
-rw-r--r--src/include/Makefile.am1
-rw-r--r--src/include/taler_auditor_service.h4
-rw-r--r--src/include/taler_auditordb_plugin.h684
-rw-r--r--src/include/taler_bank_service.h167
-rw-r--r--src/include/taler_crypto_lib.h457
-rw-r--r--src/include/taler_curl_lib.h5
-rw-r--r--src/include/taler_exchange_service.h641
-rw-r--r--src/include/taler_exchangedb_plugin.h883
-rw-r--r--src/include/taler_extensions.h345
-rw-r--r--src/include/taler_extensions_policy.h198
-rw-r--r--src/include/taler_fakebank_lib.h4
-rw-r--r--src/include/taler_json_lib.h22
-rw-r--r--src/include/taler_kyclogic_lib.h119
-rw-r--r--src/include/taler_kyclogic_plugin.h31
-rw-r--r--src/include/taler_templating_lib.h4
-rw-r--r--src/include/taler_testing_lib.h84
-rw-r--r--src/include/taler_util.h58
-rw-r--r--src/json/json.c16
-rw-r--r--src/json/json_helper.c7
-rw-r--r--src/kyclogic/Makefile.am41
-rw-r--r--src/kyclogic/kyclogic-persona.conf33
-rw-r--r--src/kyclogic/kyclogic_api.c247
-rw-r--r--src/kyclogic/plugin_kyclogic_kycaid.c82
-rw-r--r--src/kyclogic/plugin_kyclogic_oauth2.c16
-rw-r--r--src/kyclogic/plugin_kyclogic_persona.c2136
-rw-r--r--src/kyclogic/plugin_kyclogic_template.c15
-rw-r--r--src/kyclogic/taler-exchange-kyc-tester.c129
-rw-r--r--src/lib/Makefile.am5
-rw-r--r--src/lib/auditor_api_deposit_confirmation.c14
-rw-r--r--src/lib/exchange_api_batch_deposit.c18
-rw-r--r--src/lib/exchange_api_batch_withdraw.c8
-rw-r--r--src/lib/exchange_api_common.c277
-rw-r--r--src/lib/exchange_api_common.h14
-rw-r--r--src/lib/exchange_api_deposit.c16
-rw-r--r--src/lib/exchange_api_deposits_get.c6
-rw-r--r--src/lib/exchange_api_handle.c70
-rw-r--r--src/lib/exchange_api_kyc_check.c30
-rw-r--r--src/lib/exchange_api_kyc_wallet.c36
-rw-r--r--src/lib/exchange_api_management_set_global_fee.c5
-rw-r--r--src/lib/exchange_api_management_set_wire_fee.c2
-rw-r--r--src/lib/exchange_api_purse_create_with_deposit.c2
-rw-r--r--src/lib/exchange_api_purse_create_with_merge.c21
-rw-r--r--src/lib/exchange_api_purse_deposit.c2
-rw-r--r--src/lib/exchange_api_purse_merge.c4
-rw-r--r--src/lib/exchange_api_purses_get.c14
-rw-r--r--src/lib/exchange_api_refund.c13
-rw-r--r--src/lib/exchange_api_reserves_attest.c356
-rw-r--r--src/lib/exchange_api_reserves_close.c385
-rw-r--r--src/lib/exchange_api_reserves_get_attestable.c290
-rw-r--r--src/lib/exchange_api_reserves_open.c607
-rw-r--r--src/lib/exchange_api_wire.c2
-rw-r--r--src/lib/exchange_api_withdraw.c9
-rw-r--r--src/lib/exchange_api_withdraw2.c2
-rw-r--r--src/mhd/mhd_legal.c43
-rw-r--r--src/mhd/mhd_parsing.c2
-rw-r--r--src/pq/test_pq.c6
-rw-r--r--src/sq/test_sq.c2
-rw-r--r--src/templating/Makefile.am8
-rw-r--r--src/templating/mustach-jansson.c156
-rw-r--r--src/templating/templating_api.c16
-rw-r--r--src/templating/test_mustach_jansson.c2
-rw-r--r--src/testing/Makefile.am5
-rw-r--r--src/testing/test_auditor_api.c1
-rw-r--r--src/testing/test_bank_api.c2
-rw-r--r--src/testing/test_bank_api_twisted.c2
-rw-r--r--src/testing/test_exchange_api.c6
-rw-r--r--src/testing/test_exchange_api_keys_cherry_picking.c3
-rw-r--r--src/testing/test_exchange_api_overlapping_keys_bug.c2
-rw-r--r--src/testing/test_exchange_api_twisted.c2
-rw-r--r--src/testing/test_exchange_management_api.c5
-rw-r--r--src/testing/test_exchange_p2p.c116
-rw-r--r--src/testing/test_kyc_api.c35
-rw-r--r--src/testing/test_kyc_api.conf15
-rw-r--r--src/testing/test_taler_exchange_aggregator.c3
-rw-r--r--src/testing/test_taler_exchange_wirewatch.c3
-rw-r--r--src/testing/testing_api_cmd_auditor_deposit_confirmation.c4
-rw-r--r--src/testing/testing_api_cmd_bank_admin_add_incoming.c2
-rw-r--r--src/testing/testing_api_cmd_bank_history_credit.c137
-rw-r--r--src/testing/testing_api_cmd_bank_history_debit.c139
-rw-r--r--src/testing/testing_api_cmd_batch_deposit.c2
-rw-r--r--src/testing/testing_api_cmd_batch_withdraw.c27
-rw-r--r--src/testing/testing_api_cmd_common.c43
-rw-r--r--src/testing/testing_api_cmd_contract_get.c1
-rw-r--r--src/testing/testing_api_cmd_deposit.c18
-rw-r--r--src/testing/testing_api_cmd_deposits_get.c22
-rw-r--r--src/testing/testing_api_cmd_exec_closer.c11
-rw-r--r--src/testing/testing_api_cmd_exec_wirewatch.c1
-rw-r--r--src/testing/testing_api_cmd_kyc_check_get.c28
-rw-r--r--src/testing/testing_api_cmd_kyc_proof.c31
-rw-r--r--src/testing/testing_api_cmd_kyc_wallet_get.c24
-rw-r--r--src/testing/testing_api_cmd_offline_sign_global_fees.c22
-rw-r--r--src/testing/testing_api_cmd_offline_sign_wire_fees.c10
-rw-r--r--src/testing/testing_api_cmd_purse_deposit.c11
-rw-r--r--src/testing/testing_api_cmd_purse_get.c9
-rw-r--r--src/testing/testing_api_cmd_purse_merge.c10
-rw-r--r--src/testing/testing_api_cmd_reserve_attest.c229
-rw-r--r--src/testing/testing_api_cmd_reserve_close.c204
-rw-r--r--src/testing/testing_api_cmd_reserve_get.c9
-rw-r--r--src/testing/testing_api_cmd_reserve_get_attestable.c235
-rw-r--r--src/testing/testing_api_cmd_reserve_open.c349
-rw-r--r--src/testing/testing_api_cmd_reserve_purse.c18
-rw-r--r--src/testing/testing_api_cmd_set_wire_fee.c10
-rw-r--r--src/testing/testing_api_cmd_wire.c6
-rw-r--r--src/testing/testing_api_cmd_withdraw.c22
-rw-r--r--src/testing/testing_api_helpers_auditor.c1
-rw-r--r--src/testing/testing_api_helpers_exchange.c9
-rw-r--r--src/util/Makefile.am1
-rw-r--r--src/util/age_restriction.c115
-rw-r--r--src/util/bench_age_restriction.c208
-rw-r--r--src/util/crypto_helper_cs.c594
-rw-r--r--src/util/crypto_helper_rsa.c248
-rwxr-xr-xsrc/util/do_bench_age_restriction8
-rw-r--r--src/util/exchange_signatures.c244
-rw-r--r--src/util/offline_signatures.c39
-rw-r--r--src/util/taler-exchange-secmod-cs.c973
-rw-r--r--src/util/taler-exchange-secmod-cs.h71
-rw-r--r--src/util/taler-exchange-secmod-rsa.c11
-rw-r--r--src/util/taler-exchange-secmod-rsa.h6
-rw-r--r--src/util/test_helper_cs.c327
-rw-r--r--src/util/test_helper_rsa.c250
-rw-r--r--src/util/util.c41
-rw-r--r--src/util/wallet_signatures.c386
825 files changed, 68770 insertions, 60430 deletions
diff --git a/.gitignore b/.gitignore
index 1223f074..a029ccda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -166,3 +166,5 @@ src/exchange/taler-exchange-drain
src/kyclogic/taler-exchange-kyc-tester
src/auditor/exchange-httpd-drain.err
src/templating/libmustach.a
+contrib/tos/conf.py
+contrib/pp/conf.py
diff --git a/ChangeLog b/ChangeLog
index 690686a0..8befc0b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Nov 5 11:32:45 AM CET 2022
+ Added support for P2P payments.
+ Added support for explicit reserve lifetime control.
+ Added support for age restrictions.
+ Releasing GNU Taler Exchange 0.9.0. -CG
+
Fri 03 Sep 2021 07:02:05 PM CEST
Add experimental aggregator sharding logic. -CG
diff --git a/README b/README
index 1a8ad5c2..2e6dbba7 100644
--- a/README
+++ b/README
@@ -13,15 +13,14 @@ spend their digital coins. Naturally, each Merchant is different, but
Taler includes code examples to help Merchants integrate Taler as a
payment system.
-Taler is currently developed by a worldwide group of independent free
-software developers and the DECENTRALISE team at Inria Rennes. Taler
-is free software and a GNU package (https://www.gnu.org/).
+Taler is currently developed by a worldwide group of independent free software
+developers and Taler Systems SA. Taler is free software and an official GNU
+package (https://www.gnu.org/).
-This is an alpha release with a few known bugs, lacking a few
-important features, documentation, testing, performance tuning and an
-external security audit. However, you can run the code and it largely
-works fine. that does not work yet. This package also only includes
-the Taler exchange, not the other components of the system.
+This is an alpha release with a few known bugs, lacking a few important
+features, documentation, testing, performance tuning and an external security
+audit. However, you can run the code and it largely works fine. This package
+also only includes the Taler exchange, not the other components of the system.
Documentation about Taler can be found at https://taler.net/.
Our bug tracker is at https://bugs.taler.net/.
@@ -63,7 +62,7 @@ src/pq/
-- Postgres-specific utility functions
src/exchangedb/
- -- Exchange database backend (with DB-specific plugins)
+ -- Exchange database backend (with database-specific plugins)
src/exchange/
-- taler exchange server
@@ -71,71 +70,50 @@ src/exchange/
src/exchange-tools/
-- taler exchange helper programs
-src/exchange-lib/
+src/lib/
-- libtalerexchange: C API to issue HTTP requests to exchange
src/auditor/
-- tools to generate reports about financial performance and
to validate that the exchange has been operating correctly
+src/auditordb/
+ -- database logic for the auditor component (with database-specific
+ plugins)
+
src/benchmark/
-- tool to run performance measurements
+src/templating/
+ -- logic to generate HTML pages from templates at runtime
+src/kyclogic/
+ -- core logic and plugins to trigger and manage KYC processes
+ as required by banking regulation
-Getting Started
-===============
-
-The following steps illustrate how to set up a exchange HTTP server.
-They take as a stub for configuring the exchange the content of 'contrib/exchange-template/config/'.
-
-1) Create a 'test/' directory and copy the stubs in it:
-
-mkdir -p test/config/
-cp exchange/contrib/exchange-template/config/* test/config/
-cd test/
-
-2) Create the exchange's master with the tool 'gnunet-ecc':
+src/bank-lib/
+ -- bank REST client logic and implementation of an in-memory
+ RTGS emulator ("fakebank") for testing.
-gnunet-ecc -g1 master.priv
+src/extensions/
+ -- extensions to the core logic of an exchange
-3) Edit config/exchange-common.conf by replacing the right value on the line with the
-MASTER_PUBLIC_KEY entry with the fresh generated (ASCII version of) master.priv.
-This ASCII version is obtained by issuing:
+src/json/
+ -- helper functions for generating and parsing JSON
-gnunet-ecc -p master.priv
+src/mhd/
+ -- helper functions for interacting with GNU libmicrohttpd
-4) Generate other exchange related keys ('denomination' and 'signing' keys), by issuing:
+src/curl/
+ -- helper functions for interacting with libcurl
-taler-exchange-keyup -m master.priv -o auditor.in
-5) A exchange needs a database to operate, so the following instructions relate to
-how to set up PostgreSQL. On debian, the two packages needed are:
-
-* postgresql
-* postgresql-client
-
-For other operating systems, please refer to the relevant documentation.
-
-In this settlement, the exchange will use a database called 'talercheck' and will
-run under the username through which 'taler-exchange-httpd' is launched. Thus assuming
-that this user is 'demo', we need to create a 'demo' role for postgresql and make
-him the owner of 'talercheck' database.
-
-To perform these administrative tasks we have to impersonate the 'postgres' (by default,
-postgres installation assigns privileges to such a user) user, then connect to the running DBMS.
-Issue the following:
-
-su # give your root password
-su - postgres
-psql # this is the command-line client to the DMBS
-# the following lines are SQL
-CREATE USER demo;
-CREATE DATABASE talercheck OWNER demo;
-# quit with CTRL-D
+Getting Started
+===============
-7) If any previous step has been successful, it is now possbile to start up the
-exchange web server (by default it will listen on port 4241); issue:
+Please follow the exchange manual you can view after
+installing using
+$ info taler-exchange
-taler-exchange-httpd -d `pwd` # assuming we did not move outside of the 'test' directory
+or by visiting https://docs.taler.net/.
diff --git a/bootstrap b/bootstrap
index 65b71c7d..20c1c602 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,4 +1,5 @@
#!/bin/sh
+# This file is in the public domain.
set -eu
@@ -7,6 +8,12 @@ if ! git --version >/dev/null; then
exit 1
fi
+if ! htmlark --version >/dev/null; then
+ echo "htmlark not installed"
+ echo "Run 'pip install htmlark'"
+ exit 1
+fi
+
echo "$0: Updating submodules"
echo | git submodule update --init
diff --git a/configure.ac b/configure.ac
index 290afd0a..2df8674e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
#
#
AC_PREREQ([2.69])
-AC_INIT([taler-exchange],[0.8.5],[taler-bug@gnunet.org])
+AC_INIT([taler-exchange],[0.9.0],[taler-bug@gnunet.org])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([src/util/util.c])
AC_CONFIG_HEADERS([taler_config.h])
@@ -532,6 +532,7 @@ AC_CONFIG_FILES([Makefile
src/exchangedb/Makefile
src/exchange-tools/Makefile
src/extensions/Makefile
+ src/extensions/age_restriction/Makefile
src/lib/Makefile
src/kyclogic/Makefile
src/testing/Makefile
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index c69be57e..cc1cf4d7 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -3,15 +3,14 @@ SUBDIRS = .
tmplpkgdatadir = $(prefix)/share/taler/exchange/templates/
dist_tmplpkgdata_DATA = \
- bad_gateway.en.must \
- kyc_provider_unauthorized.en.must \
- kyc_provider_unexpected_reply.en.must \
- kyc_interaction_failed.en.must \
- kyc_provider_unpaid.en.must \
- kyc_provider_internal_error.en.must \
- kyc_user_failed.en.must \
- kyc_provider_ratelimit.en.must \
- kyc_provider_timeout.en.must
+ persona-exchange-unauthorized.en.must \
+ persona-load-failure.en.must \
+ persona-exchange-unpaid.en.must \
+ persona-logic-failure.en.must \
+ persona-invalid-response.en.must \
+ persona-network-timeout.en.must \
+ persona-kyc-failed.en.must \
+ persona-provider-failure.en.must
# %%.must: merchant-backoffice/%.html
# WTF: cp $< $@
@@ -26,18 +25,18 @@ ppendir=$(datadir)/taler/exchange/pp/en
rdatadir=$(datadir)/taler/exchange
tosen_DATA = \
- tos/en/0.txt \
- tos/en/0.pdf \
- tos/en/0.epub \
- tos/en/0.xml \
- tos/en/0.html
+ tos/en/*.txt \
+ tos/en/*.pdf \
+ tos/en/*.epub \
+ tos/en/*.xml \
+ tos/en/*.html
ppen_DATA = \
- pp/en/0.txt \
- pp/en/0.pdf \
- pp/en/0.epub \
- pp/en/0.xml \
- pp/en/0.html
+ pp/en/*.txt \
+ pp/en/*.pdf \
+ pp/en/*.epub \
+ pp/en/*.xml \
+ pp/en/*.html
rdata_DATA = \
auditor-report.tex.j2
@@ -57,13 +56,14 @@ EXTRA_DIST = \
gana/gnu-taler-error-codes/Makefile \
tos/Makefile \
tos/README \
- tos/tos.rst \
- tos/conf.py \
+ tos/bfh-v0.rst \
+ tos/tos-v0.rst \
+ tos/conf.py.in \
tos/locale/de/LC_MESSAGES/tos.po \
pp/Makefile \
pp/README \
- pp/pp.rst \
- pp/conf.py \
+ pp/pp-v0.rst \
+ pp/conf.py.in \
pp/locale/de/LC_MESSAGES/pp.po \
$(rdata_DATA) \
coverage.sh \
@@ -76,10 +76,10 @@ TOS_LANGUAGES="en de"
PP_LANGUAGES="en de"
# Change the terms-of-service version (Etag) to generate here!
-# This value should be incremented whenever there is a substantive
+# This value should be modified whenever there is a substantive
# change in the original text (but not for the translations).
-TOS_VERSION=0
-PP_VERSION=0
+TOS_VERSION=tos-v0
+PP_VERSION=pp-v0
update-tos:
VERSION=$(TOS_VERSION) ./update-tos.sh $(TOS_LANGUAGES)
diff --git a/contrib/auditor-report.tex.j2 b/contrib/auditor-report.tex.j2
index cfd613a0..d40dc0c8 100644
--- a/contrib/auditor-report.tex.j2
+++ b/contrib/auditor-report.tex.j2
@@ -140,9 +140,9 @@ In that time, the wire auditor processed the following table ranges:
\end{center}
The total credits to the exchange processed in
-this audit run was {\bf {{ wire.total_wire_in }}.
+this audit run was {\bf {{ wire.total_wire_in }}}.
The total debits initiated by the exchange processed in
-this audit run was {\bf {{ wire.total_wire_out }}.
+this audit run was {\bf {{ wire.total_wire_out }}}.
\section{Operations}
@@ -169,9 +169,8 @@ Loss (actualized risk from recoups) is
{\bf {{ coins.total_recoup_loss }}}.
\noindent
-Recoups of non-revoked coins are at
-{\bf {{ coins.total_irregular_recoups }}} (coins)
-plus {\bf {{ reserves.total_irregular_recoups }}} (reserves).
+Losses from irregular reserve operations are at
+{\bf {{ reserves.total_irregular_loss }}} (reserves).
\section{Income}
@@ -318,8 +317,8 @@ confirmations to the auditor directly, so if the exchange is slow at
synchronizing its database with the auditor, some deposit
confirmations may be known at the auditor only directly. However, any
delta not accounted for by database synchronization delays is an
-indicator of a malicious exchange (or online singing key compromise)
-and should be answered by revoking the exchange's online siging keys.
+indicator of a malicious exchange (or online signing key compromise)
+and should be answered by revoking the exchange's online signing keys.
% TODO: maybe reference PhD thesis on this?
The total amount the exchange currently lags behind is
@@ -613,7 +612,7 @@ compromise resulting in proportional financial losses to the exchange.
\endfoot
\hline
{\bf Total loss} &
- {{ reserves.total_loss_balance_insufficient }} \\
+ {{ reserves.total_irregular_loss }} \\
\caption{Reserves with withdrawals higher than reserve funding.}
\label{table:reserve:balance_insufficient}
\endlastfoot
@@ -782,7 +781,7 @@ invalid and the amount involved should be considered lost.
\endfoot
\hline
\multicolumn{2}{l}{ {\bf Total losses} } &
- {\bf {{ coins.total_bad_sig_loss}} } \\
+ {\bf {{ coins.irregular_loss}} } \\
\caption{Losses from operations performed on coins without proper signatures.}
\label{table:bad_signature_losses}
\endlastfoot
@@ -901,7 +900,7 @@ actually received in some reserves.
{% endif %}
-\subsection{Missattributed incoming wire transfers}
+\subsection{Misattributed incoming wire transfers}
This section lists cases where the sender account record of an
incoming wire transfer differs between the exchange and the bank.
@@ -911,7 +910,7 @@ account.
% Table generation tested by testcase #9 in test-auditor.sh
-{% if wire.missattribution_in_inconsistencies|length() == 0 %}
+{% if wire.misattribution_in_inconsistencies|length() == 0 %}
{\bf All incoming wire transfer sender accounts matched up.}
{% else %}
\begin{longtable}{p{8.5cm}|r}
@@ -926,11 +925,11 @@ account.
\endfoot
\hline
{\bf Total amount} &
- {{ wire.total_missattribution_in}} \\
+ {{ wire.total_misattribution_in}} \\
\caption{Incoming wire transfer sender accounts not matching up.}
\label{table:wire_in:sender_account_inconsistencies}
\endlastfoot
-{% for item in wire.missattribution_in_inconsistencies %}
+{% for item in wire.misattribution_in_inconsistencies %}
{\tt \small \truncate{8.3cm}{ {{ item.reserve_pub }} } } &
{{ item.amount }} \\ \hline
{% endfor %}
@@ -942,7 +941,7 @@ account.
\subsection{Actual outgoing wire transfers} \label{sec:wire_check_out}
-This section highlights cases where the exchange missbehaved
+This section highlights cases where the exchange misbehaved
with respect to outgoing wire transfers.
% Table generation tested by testcase #11 in test-auditor.sh
@@ -988,10 +987,10 @@ with respect to outgoing wire transfers.
\subsection{Denominations without auditor signature}
This section highlights denomination keys that lack a proper
-signature from the {\t taler-auditor-offline} tool. This may be
+signature from the {\tt taler-auditor-offline} tool. This may be
legitimate, say in case where the auditor's involvement in the
exchange business is ending and a new auditor is responsible for
-future denomnations. So this must be read with a keen eye on the
+future denominations. So this must be read with a keen eye on the
business situation.
@@ -1107,7 +1106,7 @@ have a clear financial impact.
{{ item.row }} &
{{ item.diagnostic }} \\
\nopagebreak
- \multicolumn{3}{l}{ {\tiny {\tt \truncate{\textwidth}{ {{ item.wire_offset_hash }} } } } } \\ \hline
+ \multicolumn{3}{l}{ {\tiny {\tt \truncate{\textwidth}{ {{ item.id }} } } } } \\ \hline
{% endfor %}
\end{longtable}
{% endif %}
diff --git a/contrib/bad_gateway.en.must b/contrib/bad_gateway.en.must
deleted file mode 100644
index f177db90..00000000
--- a/contrib/bad_gateway.en.must
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<head>
-<title>KYC server failure</title>
-</head>
-<body>
-The KYC backend returned a malformed response, reproduced
-below. Please inform the exchange operator about this failure.
-<pre>
-{{ kyc_server_reply }}
-</pre>
-</body>
-</html> \ No newline at end of file
diff --git a/contrib/gana b/contrib/gana
-Subproject ce901edbaf496244f50f45b221d0c2c929c4763
+Subproject a4a6b9ba4b2634c56194d53e36344686d7052ce
diff --git a/contrib/gana-update.sh b/contrib/gana-update.sh
index b20bbaa1..4679e200 100755
--- a/contrib/gana-update.sh
+++ b/contrib/gana-update.sh
@@ -1,4 +1,6 @@
#!/bin/sh
+# This file is in the public domain.
+#
# Helper script to recompute error codes based on submodule
# Run from exchange/ main directory.
set -eu
diff --git a/contrib/kyc_user_failed.en.must b/contrib/kyc_user_failed.en.must
deleted file mode 100644
index 54a4637c..00000000
--- a/contrib/kyc_user_failed.en.must
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>
-<head>
-<title>KYC authentication failed</title>
-</head>
-<body>
-You failed the KYC check. See below for details.
-<!-- {{logic}} indicates the type of KYC provider
- which generated the reply; for now, only
- "kycaid" is possible. Switch on the
- {{logic}} to render results in a provider-specific
- way. (or introduce new templates per provider?) -->
-<!-- TODO: figure out exactly what the
- format of 'verifications' is here
- based on KYCAID documentation and parse
- that here. -->
-<pre>
-{{ verifications }}
-</pre>
-</body>
-</html> \ No newline at end of file
diff --git a/contrib/kyc_provider_unauthorized.en.must b/contrib/persona-exchange-unauthorized.en.must
index 9b485817..9b485817 100644
--- a/contrib/kyc_provider_unauthorized.en.must
+++ b/contrib/persona-exchange-unauthorized.en.must
diff --git a/contrib/kyc_provider_unpaid.en.must b/contrib/persona-exchange-unpaid.en.must
index 65fa4f9b..65fa4f9b 100644
--- a/contrib/kyc_provider_unpaid.en.must
+++ b/contrib/persona-exchange-unpaid.en.must
diff --git a/contrib/kyc_provider_unexpected_reply.en.must b/contrib/persona-invalid-response.en.must
index b3df670a..a288ae07 100644
--- a/contrib/kyc_provider_unexpected_reply.en.must
+++ b/contrib/persona-invalid-response.en.must
@@ -1,9 +1,9 @@
<html>
<head>
-<title>KYC provider returned unexpected status code</title>
+<title>KYC provider returned unexpected response</title>
</head>
<body>
-The KYC backend returned an unexpected status code.
+The KYC backend returned an unexpected response.
<pre>
{{ kyc_http_status }}
{{ kyc_logic }}
diff --git a/contrib/kyc_failed.en.must b/contrib/persona-kyc-failed.en.must
index c1e27a82..c1e27a82 100644
--- a/contrib/kyc_failed.en.must
+++ b/contrib/persona-kyc-failed.en.must
diff --git a/contrib/kyc_provider_ratelimit.en.must b/contrib/persona-load-failure.en.must
index 77917c0b..77917c0b 100644
--- a/contrib/kyc_provider_ratelimit.en.must
+++ b/contrib/persona-load-failure.en.must
diff --git a/contrib/kyc_interaction_failed.en.must b/contrib/persona-logic-failure.en.must
index 504cd09c..504cd09c 100644
--- a/contrib/kyc_interaction_failed.en.must
+++ b/contrib/persona-logic-failure.en.must
diff --git a/contrib/kyc_provider_timeout.en.must b/contrib/persona-network-timeout.en.must
index c1ad79b3..c1ad79b3 100644
--- a/contrib/kyc_provider_timeout.en.must
+++ b/contrib/persona-network-timeout.en.must
diff --git a/contrib/kyc_provider_internal_error.en.must b/contrib/persona-provider-failure.en.must
index 37d1e0f3..37d1e0f3 100644
--- a/contrib/kyc_provider_internal_error.en.must
+++ b/contrib/persona-provider-failure.en.must
diff --git a/contrib/pp/conf.py b/contrib/pp/conf.py.in
index 9acb9786..d6805efe 100644
--- a/contrib/pp/conf.py
+++ b/contrib/pp/conf.py.in
@@ -1,6 +1,6 @@
"""
This file is part of GNU TALER.
- Copyright (C) 2014-2020 Taler Systems SA
+ Copyright (C) 2014-2022 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
@@ -68,20 +68,20 @@ source_suffix = {
#source_encoding = 'utf-8-sig'
# The master toctree document.
-master_doc = 'pp'
+master_doc = '%VERSION%'
# General information about the project.
-project = u'pp'
-copyright = u'2014-2020 Taler Systems SA (GPLv3+ or GFDL 1.3+)'
+project = u'%VERSION%'
+copyright = u'2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = '0'
+version = '%VERSION%'
# The full version, including alpha/beta/rc tags.
-release = '0'
+release = '%VERSION%'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -192,7 +192,7 @@ html_short_title = "Privacy Policy"
#html_domain_indices = True
# If false, no index is generated.
-#html_use_index = True
+html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
@@ -231,7 +231,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- ('pp', 'pp.tex',
+ ('%VERSION%', '%VERSION%.tex',
'Privacy Policy', 'GNU Taler team', 'manual'),
]
@@ -277,6 +277,6 @@ latex_documents = [
# -- Options for epub output ----------------------------
-epub_basename = "pp"
+epub_basename = "%VERSION%"
epub_title = "Privacy Policy"
diff --git a/contrib/pp/en/0.epub b/contrib/pp/en/0.epub
deleted file mode 100644
index 7e9e5343..00000000
--- a/contrib/pp/en/0.epub
+++ /dev/null
Binary files differ
diff --git a/contrib/pp/en/0.html b/contrib/pp/en/0.html
deleted file mode 100644
index ce704535..00000000
--- a/contrib/pp/en/0.html
+++ /dev/null
@@ -1,211 +0,0 @@
-
-
-<html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Privacy Policy &#8212; Taler Privacy Policy</title>
- <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
- <link rel="stylesheet" href="_static/epub.css" type="text/css" />
- <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
- <script src="_static/jquery.js"></script>
- <script src="_static/underscore.js"></script>
- <script src="_static/doctools.js"></script>
- </head><body>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body" role="main">
-
- <div class="section" id="privacy-policy">
-<h1>Privacy Policy<a class="headerlink" href="#privacy-policy" title="Permalink to this headline">¶</a></h1>
-<p>Last Updated: 11.12.2019</p>
-<p>This Privacy Policy describes the policies and procedures of Taler Systems SA
-(“we,” “our,” or “us”) pertaining to the collection, use, and disclosure of
-your information on our sites and related mobile applications and products we
-offer (the “Services” or “Taler Wallet”). This Privacy Statement applies to
-your personal data when you use our Services, and does not apply to online
-websites or services that we do not own or control.</p>
-<div class="section" id="overview">
-<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
-<p>Your privacy is important to us. We follow a few fundamental principles: We
-don’t ask you for personally identifiable information (defined below). That
-being said, your contact information, such as your phone number, social media
-handle, or email address (depending on how you contact us), may be collected
-when you communicate with us, for example to report a bug or other error
-related to the Taler Wallet. We don’t share your information with third
-parties except when strictly required to deliver you our Services and
-products, or to comply with the law. If you have any questions or concerns
-about this policy, please reach out to us at <a class="reference external" href="mailto:privacy&#37;&#52;&#48;taler-systems&#46;net">privacy<span>&#64;</span>taler-systems<span>&#46;</span>net</a>.</p>
-</div>
-<div class="section" id="how-you-accept-this-policy">
-<h2>How you accept this policy<a class="headerlink" href="#how-you-accept-this-policy" title="Permalink to this headline">¶</a></h2>
-<p>By using our Services or visiting our sites, you agree to the use, disclosure,
-and procedures outlined in this Privacy Policy.</p>
-</div>
-<div class="section" id="what-personal-information-do-we-collect-from-our-users">
-<h2>What personal information do we collect from our users?<a class="headerlink" href="#what-personal-information-do-we-collect-from-our-users" title="Permalink to this headline">¶</a></h2>
-<p>The information we collect from you falls into two categories: (i) personally
-identifiable information (i.e., data that could potentially identify you as an
-individual) (“Personal Information”), and (ii) non-personally identifiable
-information (i.e., information that cannot be used to identify who you are)
-(“Non-Personal Information”). This Privacy Policy covers both categories and
-will tell you how we might collect and use each type.</p>
-<p>We do our best to not collect any Personal Information from Taler Wallet
-users. We believe that the Taler Wallet never transmits personal information
-to our services without at least clear implied consent, and we only process
-and retain information with a strict business need. That being said, when
-using our Services, we inherently have to collect the following information:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>Bank account details necessary when receiving funds from you to top-up your wallet or to transfer funds to you when you are being paid via Taler. At the current experimental stage, only the pseudonym and password you entered in the bank demonstrator is stored.</p></li>
-<li><p>The amounts being withdrawn or deposited, with associated unique transaction identifiers and cryptographic signatures authorizing the transaction. Note that for purchases, we cannot identify the buyer from the collected data, so when you spend money, we only receive non-personal information.</p></li>
-<li><p>When you contact us. We may collect certain information if you choose to contact us, for example to report a bug or other error with the Taler Wallet. This may include contact information such as your name, email address or phone number depending on the method you choose to contact us.</p></li>
-</ul>
-</div></blockquote>
-</div>
-<div class="section" id="how-we-collect-and-process-information">
-<h2>How we collect and process information<a class="headerlink" href="#how-we-collect-and-process-information" title="Permalink to this headline">¶</a></h2>
-<p>We may process your information for the following reasons:</p>
-<blockquote>
-<div><ul class="simple">
-<li><p>to transfer money as specified by our users (Taler transactions);</p></li>
-<li><p>to assist government entities in linking income to the underlying contract as required by law and local regulations</p></li>
-<li><p>to support you using the Taler Wallet or to improve our Services</p></li>
-</ul>
-</div></blockquote>
-</div>
-<div class="section" id="how-we-share-and-use-the-information-we-gather">
-<h2>How we share and use the information we gather<a class="headerlink" href="#how-we-share-and-use-the-information-we-gather" title="Permalink to this headline">¶</a></h2>
-<p>We may share your Personal Data or other information about you only if you are
-a merchant receiving income, with your bank, to the degree necessary to
-execute the payment.</p>
-<p>We retain Personal Data to transfer funds to the accounts designated by our
-users. We may retain Personal Data only for as long as mandated by law and
-required for the wire transfers.</p>
-<p>We primarily use the limited information we receive directly from you to
-enhance the Taler Wallet. Some ways we may use your Personal Information are
-to: Contact you when necessary to respond to your comments, answer your
-questions, or obtain additional information on issues related to bugs or
-errors with the Taler Wallet that you reported.</p>
-</div>
-<div class="section" id="agents-or-third-party-partners">
-<h2>Agents or third party partners<a class="headerlink" href="#agents-or-third-party-partners" title="Permalink to this headline">¶</a></h2>
-<p>We may provide your Personal Information to our employees, contractors,
-agents, service providers, and designees (“Agents”) to enable them to perform
-certain services for us exclusively, including: improvement and maintenance of
-our software and Services.</p>
-</div>
-<div class="section" id="protection-of-us-and-others">
-<h2>Protection of us and others<a class="headerlink" href="#protection-of-us-and-others" title="Permalink to this headline">¶</a></h2>
-<p>We reserve the right to access, read, preserve, and disclose any information
-that we reasonably believe is necessary to comply with the law or a court
-order.</p>
-</div>
-<div class="section" id="what-personal-information-can-i-access-or-change">
-<h2>What personal information can I access or change?<a class="headerlink" href="#what-personal-information-can-i-access-or-change" title="Permalink to this headline">¶</a></h2>
-<p>You can request access to the information we have collected from you. You can
-do this by contacting us at <a class="reference external" href="mailto:privacy&#37;&#52;&#48;taler-systems&#46;net">privacy<span>&#64;</span>taler-systems<span>&#46;</span>net</a>. We will make sure to
-provide you with a copy of the data we process about you. To comply with your
-request, we may ask you to verify your identity. We will fulfill your request
-by sending your copy electronically. For any subsequent access request, we may
-charge you with an administrative fee. If you believe that the information we
-have collected is incorrect, you are welcome to contact us so we can update it
-and keep your data accurate. Any data that is no longer needed for purposes
-specified in the “How We Use the Information We Gather” section will be
-deleted after ninety (90) days.</p>
-</div>
-<div class="section" id="what-are-your-data-protection-rights">
-<h2>What are your data protection rights?<a class="headerlink" href="#what-are-your-data-protection-rights" title="Permalink to this headline">¶</a></h2>
-<p>Anastasis would like to make sure you are fully aware of all of your
-data protection rights. Every user is entitled to the following:</p>
-<dl class="simple">
-<dt><strong>The right to access</strong>: You have the right to request Anastasis for</dt><dd><p>copies of your personal data. We may charge you a small fee for this
-service.</p>
-</dd>
-</dl>
-<p><strong>The right to rectification</strong>: You have the right to request that
-Anastasis correct any information you believe is inaccurate. You also
-have the right to request Anastasis to complete information you
-believe is incomplete. The right to erasure - You have the right to
-request that Anastasis erase your personal data, under certain
-conditions.</p>
-<dl class="simple">
-<dt><strong>The right to restrict processing</strong>: You have the right to request</dt><dd><p>that Anastasis restrict the processing of your personal data, under
-certain conditions.</p>
-</dd>
-<dt><strong>The right to object to processing</strong>: You have the right to object to</dt><dd><p>Anastasis’s processing of your personal data, under certain
-conditions.</p>
-</dd>
-<dt><strong>The right to data portability</strong>: You have the right to request that</dt><dd><p>Anastasis transfer the data that we have collected to another
-organization, or directly to you, under certain conditions.</p>
-</dd>
-</dl>
-<p>If you make a request, we have one month to respond to you. If you
-would like to exercise any of these rights, please contact us at our
-email: <a class="reference external" href="mailto:privacy&#37;&#52;&#48;taler-systems&#46;com">privacy<span>&#64;</span>taler-systems<span>&#46;</span>com</a></p>
-<p>You can always contact your local data protection authority to enforce
-your rights.</p>
-</div>
-<div class="section" id="data-retention">
-<h2>Data retention<a class="headerlink" href="#data-retention" title="Permalink to this headline">¶</a></h2>
-<p>If you uninstall the Taler Wallet mobile applications from your device, or
-request that your information be deleted, we still may retain some information
-that you have provided to us to maintain the Taler Wallet or to comply with
-relevant laws.</p>
-</div>
-<div class="section" id="data-security">
-<h2>Data security<a class="headerlink" href="#data-security" title="Permalink to this headline">¶</a></h2>
-<p>We are committed to making sure your information is protected. We employ
-several physical and electronic safeguards to keep your information safe,
-including encrypted user passwords, two factor verification and authentication
-on passwords where possible, and securing connections with industry standard
-transport layer security. You are also welcome to contact us using GnuPG
-encrypted e-mail. Even with all these precautions, we cannot fully guarantee
-against the access, disclosure, alteration, or deletion of data through
-events, including but not limited to hardware or software failure or
-unauthorized use. Any information that you provide to us is done so entirely
-at your own risk.</p>
-</div>
-<div class="section" id="changes-and-updates-to-privacy-policy">
-<h2>Changes and updates to privacy policy<a class="headerlink" href="#changes-and-updates-to-privacy-policy" title="Permalink to this headline">¶</a></h2>
-<p>We reserve the right to update and revise this privacy policy at any time. We
-occasionally review this Privacy Policy to make sure it complies with
-applicable laws and conforms to changes in our business. We may need to update
-this Privacy Policy, and we reserve the right to do so at any time. If we do
-revise this Privacy Policy, we will update the “Effective Date” at the bottom
-of this page so that you can tell if it has changed since your last visit. As
-we generally do not collect contact information and also do not track your
-visits, we will not be able to notify you directly. However, the Taler Wallet
-may inform you about a change in the privacy policy once it detects that the
-policy has changed. Please review this Privacy Policy regularly to ensure that
-you are aware of its terms. Any use of our Services after an amendment to our
-Privacy Policy constitutes your acceptance to the revised or amended
-agreement.</p>
-</div>
-<div class="section" id="international-users-and-visitors">
-<h2>International users and visitors<a class="headerlink" href="#international-users-and-visitors" title="Permalink to this headline">¶</a></h2>
-<p>Our Services are hosted in Switzerland. If you are a user accessing the
-Services from the European Union, Asia, US, or any other region with laws or
-regulations governing personal data collection, use, and disclosure that
-differ from Swiss laws, please be advised that through your continued use of
-the Services, which is governed by Swiss law, you are transferring your
-Personal Information to Switzerland and you consent to that transfer.</p>
-</div>
-<div class="section" id="questions">
-<h2>Questions<a class="headerlink" href="#questions" title="Permalink to this headline">¶</a></h2>
-<p>Please contact us at <a class="reference external" href="mailto:privacy&#37;&#52;&#48;taler-systems&#46;net">privacy<span>&#64;</span>taler-systems<span>&#46;</span>net</a> if you have questions about our
-privacy practices that are not addressed in this Privacy Statement.</p>
-</div>
-</div>
-
-
- <div class="clearer"></div>
- </div>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/contrib/pp/en/pp-v0.epub b/contrib/pp/en/pp-v0.epub
new file mode 100644
index 00000000..b564671b
--- /dev/null
+++ b/contrib/pp/en/pp-v0.epub
Binary files differ
diff --git a/contrib/pp/en/pp-v0.html b/contrib/pp/en/pp-v0.html
new file mode 100644
index 00000000..e248db2e
--- /dev/null
+++ b/contrib/pp/en/pp-v0.html
@@ -0,0 +1,205 @@
+<html lang="en">
+<head>
+<meta charset="utf-8"/>
+<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+<title>Privacy Policy — Taler Privacy Policy</title>
+<link href="data:text/css,pre%20%7B%20line-height%3A%20125%25%3B%20margin%3A%200%3B%20%7D%0Atd.linenos%20pre%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23f0f0f0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Atd.linenos%20pre.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0Aspan.linenos.special%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23ffffc0%3B%20padding%3A%200%205px%200%205px%3B%20%7D%0A.highlight%20.hll%20%7B%20background-color%3A%20%23ffffcc%20%7D%0A.highlight%20%7B%20background%3A%20%23eeffcc%3B%20%7D%0A.highlight%20.c%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment%20%2A/%0A.highlight%20.err%20%7B%20border%3A%201px%20solid%20%23FF0000%20%7D%20/%2A%20Error%20%2A/%0A.highlight%20.k%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword%20%2A/%0A.highlight%20.o%20%7B%20color%3A%20%23666666%20%7D%20/%2A%20Operator%20%2A/%0A.highlight%20.ch%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Hashbang%20%2A/%0A.highlight%20.cm%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Multiline%20%2A/%0A.highlight%20.cp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Comment.Preproc%20%2A/%0A.highlight%20.cpf%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.PreprocFile%20%2A/%0A.highlight%20.c1%20%7B%20color%3A%20%23408090%3B%20font-style%3A%20italic%20%7D%20/%2A%20Comment.Single%20%2A/%0A.highlight%20.cs%20%7B%20color%3A%20%23408090%3B%20background-color%3A%20%23fff0f0%20%7D%20/%2A%20Comment.Special%20%2A/%0A.highlight%20.gd%20%7B%20color%3A%20%23A00000%20%7D%20/%2A%20Generic.Deleted%20%2A/%0A.highlight%20.ge%20%7B%20font-style%3A%20italic%20%7D%20/%2A%20Generic.Emph%20%2A/%0A.highlight%20.gr%20%7B%20color%3A%20%23FF0000%20%7D%20/%2A%20Generic.Error%20%2A/%0A.highlight%20.gh%20%7B%20color%3A%20%23000080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Heading%20%2A/%0A.highlight%20.gi%20%7B%20color%3A%20%2300A000%20%7D%20/%2A%20Generic.Inserted%20%2A/%0A.highlight%20.go%20%7B%20color%3A%20%23333333%20%7D%20/%2A%20Generic.Output%20%2A/%0A.highlight%20.gp%20%7B%20color%3A%20%23c65d09%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Prompt%20%2A/%0A.highlight%20.gs%20%7B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Strong%20%2A/%0A.highlight%20.gu%20%7B%20color%3A%20%23800080%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Generic.Subheading%20%2A/%0A.highlight%20.gt%20%7B%20color%3A%20%230044DD%20%7D%20/%2A%20Generic.Traceback%20%2A/%0A.highlight%20.kc%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Constant%20%2A/%0A.highlight%20.kd%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Declaration%20%2A/%0A.highlight%20.kn%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Namespace%20%2A/%0A.highlight%20.kp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Keyword.Pseudo%20%2A/%0A.highlight%20.kr%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Keyword.Reserved%20%2A/%0A.highlight%20.kt%20%7B%20color%3A%20%23902000%20%7D%20/%2A%20Keyword.Type%20%2A/%0A.highlight%20.m%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number%20%2A/%0A.highlight%20.s%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String%20%2A/%0A.highlight%20.na%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Name.Attribute%20%2A/%0A.highlight%20.nb%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin%20%2A/%0A.highlight%20.nc%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Class%20%2A/%0A.highlight%20.no%20%7B%20color%3A%20%2360add5%20%7D%20/%2A%20Name.Constant%20%2A/%0A.highlight%20.nd%20%7B%20color%3A%20%23555555%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Decorator%20%2A/%0A.highlight%20.ni%20%7B%20color%3A%20%23d55537%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Entity%20%2A/%0A.highlight%20.ne%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Exception%20%2A/%0A.highlight%20.nf%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function%20%2A/%0A.highlight%20.nl%20%7B%20color%3A%20%23002070%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Label%20%2A/%0A.highlight%20.nn%20%7B%20color%3A%20%230e84b5%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Namespace%20%2A/%0A.highlight%20.nt%20%7B%20color%3A%20%23062873%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Name.Tag%20%2A/%0A.highlight%20.nv%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable%20%2A/%0A.highlight%20.ow%20%7B%20color%3A%20%23007020%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Operator.Word%20%2A/%0A.highlight%20.w%20%7B%20color%3A%20%23bbbbbb%20%7D%20/%2A%20Text.Whitespace%20%2A/%0A.highlight%20.mb%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Bin%20%2A/%0A.highlight%20.mf%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Float%20%2A/%0A.highlight%20.mh%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Hex%20%2A/%0A.highlight%20.mi%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer%20%2A/%0A.highlight%20.mo%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Oct%20%2A/%0A.highlight%20.sa%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Affix%20%2A/%0A.highlight%20.sb%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Backtick%20%2A/%0A.highlight%20.sc%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Char%20%2A/%0A.highlight%20.dl%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Delimiter%20%2A/%0A.highlight%20.sd%20%7B%20color%3A%20%234070a0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Doc%20%2A/%0A.highlight%20.s2%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Double%20%2A/%0A.highlight%20.se%20%7B%20color%3A%20%234070a0%3B%20font-weight%3A%20bold%20%7D%20/%2A%20Literal.String.Escape%20%2A/%0A.highlight%20.sh%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Heredoc%20%2A/%0A.highlight%20.si%20%7B%20color%3A%20%2370a0d0%3B%20font-style%3A%20italic%20%7D%20/%2A%20Literal.String.Interpol%20%2A/%0A.highlight%20.sx%20%7B%20color%3A%20%23c65d09%20%7D%20/%2A%20Literal.String.Other%20%2A/%0A.highlight%20.sr%20%7B%20color%3A%20%23235388%20%7D%20/%2A%20Literal.String.Regex%20%2A/%0A.highlight%20.s1%20%7B%20color%3A%20%234070a0%20%7D%20/%2A%20Literal.String.Single%20%2A/%0A.highlight%20.ss%20%7B%20color%3A%20%23517918%20%7D%20/%2A%20Literal.String.Symbol%20%2A/%0A.highlight%20.bp%20%7B%20color%3A%20%23007020%20%7D%20/%2A%20Name.Builtin.Pseudo%20%2A/%0A.highlight%20.fm%20%7B%20color%3A%20%2306287e%20%7D%20/%2A%20Name.Function.Magic%20%2A/%0A.highlight%20.vc%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Class%20%2A/%0A.highlight%20.vg%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Global%20%2A/%0A.highlight%20.vi%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Instance%20%2A/%0A.highlight%20.vm%20%7B%20color%3A%20%23bb60d5%20%7D%20/%2A%20Name.Variable.Magic%20%2A/%0A.highlight%20.il%20%7B%20color%3A%20%23208050%20%7D%20/%2A%20Literal.Number.Integer.Long%20%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/pygments.css-->
+<link href="data:text/css,/%2A%0A%20%2A%20epub.css_t%0A%20%2A%20~~~~~~~~~~%0A%20%2A%0A%20%2A%20Sphinx%20stylesheet%20--%20epub%20theme.%0A%20%2A%0A%20%2A%20%3Acopyright%3A%20Copyright%202007-2021%20by%20the%20Sphinx%20team%2C%20see%20AUTHORS.%0A%20%2A%20%3Alicense%3A%20BSD%2C%20see%20LICENSE%20for%20details.%0A%20%2A%0A%20%2A/%0A%0A/%2A%20--%20main%20layout%20-----------------------------------------------------------%20%2A/%0A%0A%0A%0Adiv.clearer%20%7B%0A%20%20%20%20clear%3A%20both%3B%0A%7D%0A%0Aa%3Alink%2C%20a%3Avisited%20%7B%0A%20%20%20%20color%3A%20%233333ff%3B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20relbar%20----------------------------------------------------------------%20%2A/%0A%0Adiv.related%20%7B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.related%20h3%20%7B%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0Adiv.related%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%200%200%2010px%3B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.related%20li%20%7B%0A%20%20%20%20display%3A%20inline%3B%0A%7D%0A%0Adiv.related%20li.right%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20margin-right%3A%205px%3B%0A%7D%0A%0A/%2A%20--%20sidebar%20---------------------------------------------------------------%20%2A/%0A%0Adiv.sphinxsidebarwrapper%20%7B%0A%20%20%20%20padding%3A%2010px%205px%200%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20%7B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20width%3A%20230px%3B%0A%20%20%20%20margin-left%3A%20-100%25%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20%7B%0A%20%20%20%20list-style%3A%20none%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%2C%0Adiv.sphinxsidebar%20ul.want-points%20%7B%0A%20%20%20%20margin-left%3A%2020px%3B%0A%20%20%20%20list-style%3A%20square%3B%0A%7D%0A%0Adiv.sphinxsidebar%20ul%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Adiv.sphinxsidebar%20form%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0Adiv.sphinxsidebar%20input%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%2398dbcc%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%20100%25%3B%0A%7D%0A%0Aimg%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20max-width%3A%20100%25%3B%0A%7D%0A%0A/%2A%20--%20search%20page%20-----------------------------------------------------------%20%2A/%0A%0Aul.search%20%7B%0A%20%20%20%20margin%3A%2010px%200%200%2020px%3B%0A%20%20%20%20padding%3A%200%3B%0A%7D%0A%0Aul.search%20li%20%7B%0A%20%20%20%20padding%3A%205px%200%205px%2020px%3B%0A%20%20%20%20background-image%3A%20url%28file.png%29%3B%0A%20%20%20%20background-repeat%3A%20no-repeat%3B%0A%20%20%20%20background-position%3A%200%207px%3B%0A%7D%0A%0Aul.search%20li%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Aul.search%20li%20div.context%20%7B%0A%20%20%20%20color%3A%20%23888%3B%0A%20%20%20%20margin%3A%202px%200%200%2030px%3B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0Aul.keywordmatches%20li.goodmatch%20a%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20index%20page%20------------------------------------------------------------%20%2A/%0A%0Atable.contentstable%20%7B%0A%20%20%20%20width%3A%2090%25%3B%0A%7D%0A%0Atable.contentstable%20p.biglink%20%7B%0A%20%20%20%20line-height%3A%20150%25%3B%0A%7D%0A%0Aa.biglink%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0Aspan.linkdescr%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%20%20%20%20padding-top%3A%205px%3B%0A%20%20%20%20font-size%3A%2090%25%3B%0A%7D%0A%0A/%2A%20--%20general%20index%20---------------------------------------------------------%20%2A/%0A%0Atable.indextable%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0Atable.indextable%20ul%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20list-style-type%3A%20none%3B%0A%7D%0A%0Atable.indextable%20%3E%20tbody%20%3E%20tr%20%3E%20td%20%3E%20ul%20%7B%0A%20%20%20%20padding-left%3A%200em%3B%0A%7D%0A%0Atable.indextable%20tr.pcap%20%7B%0A%20%20%20%20height%3A%2010px%3B%0A%7D%0A%0Atable.indextable%20tr.cap%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20background-color%3A%20%23f2f2f2%3B%0A%7D%0A%0Aimg.toggler%20%7B%0A%20%20%20%20margin-right%3A%203px%3B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20cursor%3A%20pointer%3B%0A%7D%0A%0A/%2A%20--%20domain%20module%20index%20---------------------------------------------------%20%2A/%0A%0Atable.modindextable%20td%20%7B%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0A/%2A%20--%20general%20body%20styles%20---------------------------------------------------%20%2A/%0A%0Aa.headerlink%20%7B%0A%20%20%20%20visibility%3A%20hidden%3B%0A%7D%0A%0Adiv.body%20p.caption%20%7B%0A%20%20%20%20text-align%3A%20inherit%3B%0A%7D%0A%0Adiv.body%20td%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.first%20%7B%0A%20%20%20%20margin-top%3A%200%20%21important%3B%0A%7D%0A%0Ap.rubric%20%7B%0A%20%20%20%20margin-top%3A%2030px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A.align-left%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%7D%0A%0A.align-center%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0A.align-right%20%7B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20sidebars%20--------------------------------------------------------------%20%2A/%0A%0Adiv.sidebar%20%7B%0A%20%20%20%20margin%3A%200%200%200.5em%201em%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ddb%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20background-color%3A%20%23ffe%3B%0A%20%20%20%20width%3A%2040%25%3B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0Ap.sidebar-title%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A/%2A%20--%20topics%20----------------------------------------------------------------%20%2A/%0A%0Adiv.topic%20%7B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%20%20%20%20padding%3A%207px%207px%200%207px%3B%0A%20%20%20%20margin%3A%2010px%200%2010px%200%3B%0A%7D%0A%0Ap.topic-title%20%7B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%7D%0A%0A/%2A%20--%20admonitions%20-----------------------------------------------------------%20%2A/%0A%0Adiv.admonition%20%7B%0A%20%20%20%20margin-top%3A%2010px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20padding%3A%207px%3B%0A%7D%0A%0Adiv.admonition%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.admonition%20dl%20%7B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0Ap.admonition-title%20%7B%0A%20%20%20%20margin%3A%200px%2010px%205px%200px%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Adiv.body%20p.centered%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%20%20%20%20margin-top%3A%2025px%3B%0A%7D%0A%0A/%2A%20--%20tables%20----------------------------------------------------------------%20%2A/%0A%0Atable.docutils%20%7B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20border-collapse%3A%20collapse%3B%0A%7D%0A%0Atable%20caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Atable%20caption%20span.caption-text%20%7B%0A%7D%0A%0Atable.docutils%20td%2C%20table.docutils%20th%20%7B%0A%20%20%20%20padding%3A%201px%208px%201px%205px%3B%0A%20%20%20%20border-top%3A%200%3B%0A%20%20%20%20border-left%3A%200%3B%0A%20%20%20%20border-right%3A%200%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20%23aaa%3B%0A%7D%0A%0Atable.footnote%20td%2C%20table.footnote%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0Ath%20%7B%0A%20%20%20%20text-align%3A%20left%3B%0A%20%20%20%20padding-right%3A%205px%3B%0A%7D%0A%0Atable.citation%20%7B%0A%20%20%20%20border-left%3A%20solid%201px%20gray%3B%0A%20%20%20%20margin-left%3A%201px%3B%0A%7D%0A%0Atable.citation%20td%20%7B%0A%20%20%20%20border-bottom%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20figures%20---------------------------------------------------------------%20%2A/%0A%0Adiv.figure%20p.caption%20span.caption-number%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.figure%20p.caption%20span.caption-text%20%7B%0A%7D%0A%0A/%2A%20--%20field%20list%20styles%20-----------------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A%0Atable.field-list%20td%2C%20table.field-list%20th%20%7B%0A%20%20%20%20border%3A%200%20%21important%3B%0A%7D%0A%0A.field-list%20ul%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding-left%3A%201em%3B%0A%7D%0A%0A.field-list%20p%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0A/%2A%20bold%20field%20name%2C%20content%20starts%20on%20the%20same%20line%20%2A/%0A%0Adl.field-list%20%3E%20dt%2C%0Adl.option-list%20%3E%20dt%2C%0Adl.docinfo%20%3E%20dt%2C%0Adl.footnote%20%3E%20dt%2C%0Adl.citation%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20clear%3A%20left%3B%0A%20%20%20%20float%3A%20left%3B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20padding%3A%200%3B%0A%20%20%20%20padding-right%3A%200.5em%3B%0A%7D%0A%0A/%2A%20Offset%20for%20field%20content%20%28corresponds%20to%20the%20--field-name-limit%20option%29%20%2A/%0A%0Adl.field-list%20%3E%20dd%2C%0Adl.option-list%20%3E%20dd%2C%0Adl.docinfo%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%20%209em%3B%20/%2A%20ca.%2014%20chars%20in%20the%20test%20examples%20%2A/%0A%7D%0A%0A/%2A%20start%20field-body%20on%20a%20new%20line%20after%20long%20field%20names%20%2A/%0A%0Adl.field-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%2C%0Adl.option-list%20%3E%20dd%20%3E%20%2A%3Afirst-child%0A%7B%0A%20%20%20%20display%3A%20inline-block%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Adl.field-list%20%3E%20dt%3Aafter%2C%0Adl.docinfo%20%3E%20dt%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20option%20lists%20----------------------------------------------------------%20%2A/%0A%0Adl.option-list%20%7B%0A%20%20%20%20margin-left%3A%2040px%3B%0A%7D%0A%0Adl.option-list%20%3E%20dt%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aspan.option%20%7B%0A%20%20%20%20white-space%3A%20nowrap%3B%0A%7D%0A%0A/%2A%20--%20lists%20-----------------------------------------------------------------%20%2A/%0A%0A/%2A%20--%20compact%20and%20simple%20lists%3A%20no%20margin%20between%20items%20--%20%2A/%0A%0A.simple%20%20li%2C%20.compact%20li%2C%0A.simple%20%20ul%2C%20.compact%20ul%2C%0A.simple%20%20ol%2C%20.compact%20ol%2C%0A.simple%20%3E%20li%20p%2C%20.compact%20%3E%20li%20p%2C%0Adl.simple%20%3E%20dd%2C%20dl.compact%20%3E%20dd%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%7D%0A%0A/%2A%20--%20enumerated%20lists%20------------------------------------------------------%20%2A/%0A%0Aol.arabic%20%7B%0A%20%20%20%20list-style%3A%20decimal%3B%0A%7D%0A%0Aol.loweralpha%20%7B%0A%20%20%20%20list-style%3A%20lower-alpha%3B%0A%7D%0A%0Aol.upperalpha%20%7B%0A%20%20%20%20list-style%3A%20upper-alpha%3B%0A%7D%0A%0Aol.lowerroman%20%7B%0A%20%20%20%20list-style%3A%20lower-roman%3B%0A%7D%0A%0Aol.upperroman%20%7B%0A%20%20%20%20list-style%3A%20upper-roman%3B%0A%7D%0A%0Adt%20span.classifier%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adt%20span.classifier%3Abefore%20%7B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20margin%3A%200.5em%3B%0A%20%20%20%20content%3A%20%22%3A%22%3B%0A%7D%0A%0A/%2A%20--%20other%20body%20styles%20-----------------------------------------------------%20%2A/%0A%0Adl%20%7B%0A%20%20%20%20margin-bottom%3A%2015px%3B%0A%7D%0A%0Add%20p%20%7B%0A%20%20%20%20margin-top%3A%200px%3B%0A%7D%0A%0Add%20ul%2C%20dd%20table%20%7B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%7D%0A%0Add%20%7B%0A%20%20%20%20margin-top%3A%203px%3B%0A%20%20%20%20margin-bottom%3A%2010px%3B%0A%20%20%20%20margin-left%3A%2030px%3B%0A%7D%0A%0Adt%3Atarget%2C%20.highlighted%20%7B%0A%20%20%20%20background-color%3A%20%23ddd%3B%0A%7D%0A%0Adl.glossary%20dt%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%20110%25%3B%0A%7D%0A%0A.optional%20%7B%0A%20%20%20%20font-size%3A%20130%25%3B%0A%7D%0A%0A.sig-paren%20%7B%0A%20%20%20%20font-size%3A%20larger%3B%0A%7D%0A%0A.versionmodified%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.system-message%20%7B%0A%20%20%20%20background-color%3A%20%23fda%3B%0A%20%20%20%20padding%3A%205px%3B%0A%20%20%20%20border%3A%203px%20solid%20red%3B%0A%7D%0A%0A/%2A%20--%20footnotes%20and%20citations%20-----------------------------------------------%20%2A/%0A%0A/%2A%20--%20for%20html4%20--%20%2A/%0A.footnote%3Atarget%20%20%7B%0A%20%20%20%20background-color%3A%20%23dddddd%3B%0A%7D%0A%0A/%2A%20--%20for%20html5%20--%20%2A/%0A%0Adl.footnote.superscript%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%201em%3B%0A%7D%0A%0Adl.footnote.brackets%20%3E%20dd%20%7B%0A%20%20%20%20margin-left%3A%202em%3B%0A%7D%0A%0Adl%20%3E%20dt.label%20%7B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Abefore%2C%0Adt.label%20%3E%20span.brackets%3Abefore%20%7B%0A%20%20%20%20content%3A%20%22%5B%22%3B%0A%7D%0A%0Aa.footnote-reference.brackets%3Aafter%2C%0Adt.label%20%3E%20span.brackets%3Aafter%20%7B%0A%20%20%20%20content%3A%20%22%5D%22%3B%0A%7D%0A%0Aa.footnote-reference.superscript%2C%0Adl.footnote.superscript%20%3E%20dt.label%20%7B%0A%20%20%20%20vertical-align%3A%20super%3B%0A%20%20%20%20font-size%3A%20smaller%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%7B%0A%20%20%20%20margin-left%3A%200.2em%3B%0A%7D%0A%0Adt.label%20%3E%20span.fn-backref%20%3E%20a%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A/%2A%20--%20line%20blocks%20-----------------------------------------------------------%20%2A/%0A%0A.line-block%20%7B%0A%20%20%20%20display%3A%20block%3B%0A%20%20%20%20margin-top%3A%201em%3B%0A%20%20%20%20margin-bottom%3A%201em%3B%0A%7D%0A%0A.line-block%20.line-block%20%7B%0A%20%20%20%20margin-top%3A%200%3B%0A%20%20%20%20margin-bottom%3A%200%3B%0A%20%20%20%20margin-left%3A%201.5em%3B%0A%7D%0A%0A.guilabel%2C%20.menuselection%20%7B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0A.accelerator%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A.classifier%20%7B%0A%20%20%20%20font-style%3A%20oblique%3B%0A%7D%0A%0Aabbr%2C%20acronym%20%7B%0A%20%20%20%20border-bottom%3A%20dotted%201px%3B%0A%20%20%20%20cursor%3A%20help%3B%0A%7D%0A%0A/%2A%20--%20code%20displays%20---------------------------------------------------------%20%2A/%0A%0Apre%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20overflow-y%3A%20hidden%3B%0A%7D%0A%0Atd.linenos%20pre%20%7B%0A%20%20%20%20padding%3A%205px%200px%3B%0A%20%20%20%20border%3A%200%3B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20color%3A%20%23aaa%3B%0A%7D%0A%0Atable.highlighttable%20%7B%0A%20%20%20%20margin-left%3A%200.5em%3B%0A%7D%0A%0Atable.highlighttable%20td%20%7B%0A%20%20%20%20padding%3A%200%200.5em%200%200.5em%3B%0A%7D%0A%0Acode%20%7B%0A%20%20%20%20font-family%3A%20monospace%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-number%20%7B%0A%20%20%20%20padding%3A%200.1em%200.3em%3B%0A%20%20%20%20font-style%3A%20italic%3B%0A%7D%0A%0Adiv.code-block-caption%20span.caption-text%20%7B%0A%7D%0A%0Adiv.literal-block-wrapper%20%7B%0A%20%20%20%20padding%3A%201em%201em%200%3B%0A%7D%0A%0Adiv.literal-block-wrapper%20div.highlight%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%7D%0A%0Acode.descname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20font-size%3A%201.2em%3B%0A%7D%0A%0Acode.descclassname%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0Acode.xref%2C%20a%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0Ah1%20code%2C%20h2%20code%2C%20h3%20code%2C%20h4%20code%2C%20h5%20code%2C%20h6%20code%20%7B%0A%20%20%20%20background-color%3A%20transparent%3B%0A%7D%0A%0A/%2A%20--%20math%20display%20----------------------------------------------------------%20%2A/%0A%0Aimg.math%20%7B%0A%20%20%20%20vertical-align%3A%20middle%3B%0A%7D%0A%0Adiv.body%20div.math%20p%20%7B%0A%20%20%20%20text-align%3A%20center%3B%0A%7D%0A%0Aspan.eqno%20%7B%0A%20%20%20%20float%3A%20right%3B%0A%7D%0A%0A/%2A%20--%20special%20divs%20%20---------------------------------------------------------%20%2A/%0A%0Adiv.quotebar%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20max-width%3A%20250px%3B%0A%20%20%20%20float%3A%20right%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20padding%3A%207px%207px%3B%0A%20%20%20%20border%3A%201px%20solid%20%23ccc%3B%0A%7D%0Adiv.footer%20%7B%0A%20%20%20%20background-color%3A%20%23e3eff1%3B%0A%20%20%20%20padding%3A%203px%208px%203px%200%3B%0A%20%20%20%20clear%3A%20both%3B%0A%20%20%20%20font-family%3A%20sans-serif%3B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%20%20%20%20text-align%3A%20right%3B%0A%7D%0A%0Adiv.footer%20a%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A/%2A%20--%20link-target%20-----------------------------------------------------------%20%2A/%0A%0A.link-target%20%7B%0A%20%20%20%20font-size%3A%2080%25%3B%0A%7D%0A%0Atable%20.link-target%20%7B%0A%20%20%20%20/%2A%20Do%20not%20show%20links%20in%20tables%2C%20there%20is%20not%20enough%20space%20%2A/%0A%20%20%20%20display%3A%20none%3B%0A%7D%0A%0A/%2A%20--%20font-face%20-------------------------------------------------------------%20%2A/%0A%0A/%2A%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Regular.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Italic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20normal%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-Bold.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%40font-face%20%7B%0A%20%20%20%20font-family%3A%20%22LiberationNarrow%22%3B%0A%20%20%20%20font-style%3A%20oblique%2C%20italic%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20src%3A%20url%28%22res%3A///Data/fonts/LiberationNarrow-BoldItalic.otf%22%29%0A%20%20%20%20%20%20%20%20format%28%22opentype%22%29%3B%0A%7D%0A%2A/" rel="stylesheet" type="text/css"/><!--URL:_static/epub.css-->
+<script data-url_root="./" id="documentation_options" src="data:application/javascript,var%20DOCUMENTATION_OPTIONS%20%3D%20%7B%0A%20%20%20%20URL_ROOT%3A%20document.getElementById%28%22documentation_options%22%29.getAttribute%28%27data-url_root%27%29%2C%0A%20%20%20%20VERSION%3A%20%27pp-v0%27%2C%0A%20%20%20%20LANGUAGE%3A%20%27en%27%2C%0A%20%20%20%20COLLAPSE_INDEX%3A%20false%2C%0A%20%20%20%20BUILDER%3A%20%27html%27%2C%0A%20%20%20%20FILE_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20LINK_SUFFIX%3A%20%27.html%27%2C%0A%20%20%20%20HAS_SOURCE%3A%20true%2C%0A%20%20%20%20SOURCELINK_SUFFIX%3A%20%27.txt%27%2C%0A%20%20%20%20NAVIGATION_WITH_KEYS%3A%20false%0A%7D%3B"></script><!--URL:_static/documentation_options.js-->
+<script src="data:application/javascript,/%2A%21%0A%20%2A%20jQuery%20JavaScript%20Library%20v3.5.1%0A%20%2A%20https%3A//jquery.com/%0A%20%2A%0A%20%2A%20Includes%20Sizzle.js%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//jquery.org/license%0A%20%2A/%0A%28%20function%28%20global%2C%20factory%20%29%20%7B%0A%0A%09%22use%20strict%22%3B%0A%0A%09if%20%28%20typeof%20module%20%3D%3D%3D%20%22object%22%20%26%26%20typeof%20module.exports%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20For%20CommonJS%20and%20CommonJS-like%20environments%20where%20a%20proper%20%60window%60%0A%09%09//%20is%20present%2C%20execute%20the%20factory%20and%20get%20jQuery.%0A%09%09//%20For%20environments%20that%20do%20not%20have%20a%20%60window%60%20with%20a%20%60document%60%0A%09%09//%20%28such%20as%20Node.js%29%2C%20expose%20a%20factory%20as%20module.exports.%0A%09%09//%20This%20accentuates%20the%20need%20for%20the%20creation%20of%20a%20real%20%60window%60.%0A%09%09//%20e.g.%20var%20jQuery%20%3D%20require%28%22jquery%22%29%28window%29%3B%0A%09%09//%20See%20ticket%20%2314549%20for%20more%20info.%0A%09%09module.exports%20%3D%20global.document%20%3F%0A%09%09%09factory%28%20global%2C%20true%20%29%20%3A%0A%09%09%09function%28%20w%20%29%20%7B%0A%09%09%09%09if%20%28%20%21w.document%20%29%20%7B%0A%09%09%09%09%09throw%20new%20Error%28%20%22jQuery%20requires%20a%20window%20with%20a%20document%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20factory%28%20w%20%29%3B%0A%09%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09factory%28%20global%20%29%3B%0A%09%7D%0A%0A//%20Pass%20this%20if%20window%20is%20not%20defined%20yet%0A%7D%20%29%28%20typeof%20window%20%21%3D%3D%20%22undefined%22%20%3F%20window%20%3A%20this%2C%20function%28%20window%2C%20noGlobal%20%29%20%7B%0A%0A//%20Edge%20%3C%3D%2012%20-%2013%2B%2C%20Firefox%20%3C%3D18%20-%2045%2B%2C%20IE%2010%20-%2011%2C%20Safari%205.1%20-%209%2B%2C%20iOS%206%20-%209.1%0A//%20throw%20exceptions%20when%20non-strict%20code%20%28e.g.%2C%20ASP.NET%204.5%29%20accesses%20strict%20mode%0A//%20arguments.callee.caller%20%28trac-13335%29.%20But%20as%20of%20jQuery%203.0%20%282016%29%2C%20strict%20mode%20should%20be%20common%0A//%20enough%20that%20all%20such%20attempts%20are%20guarded%20in%20a%20try%20block.%0A%22use%20strict%22%3B%0A%0Avar%20arr%20%3D%20%5B%5D%3B%0A%0Avar%20getProto%20%3D%20Object.getPrototypeOf%3B%0A%0Avar%20slice%20%3D%20arr.slice%3B%0A%0Avar%20flat%20%3D%20arr.flat%20%3F%20function%28%20array%20%29%20%7B%0A%09return%20arr.flat.call%28%20array%20%29%3B%0A%7D%20%3A%20function%28%20array%20%29%20%7B%0A%09return%20arr.concat.apply%28%20%5B%5D%2C%20array%20%29%3B%0A%7D%3B%0A%0A%0Avar%20push%20%3D%20arr.push%3B%0A%0Avar%20indexOf%20%3D%20arr.indexOf%3B%0A%0Avar%20class2type%20%3D%20%7B%7D%3B%0A%0Avar%20toString%20%3D%20class2type.toString%3B%0A%0Avar%20hasOwn%20%3D%20class2type.hasOwnProperty%3B%0A%0Avar%20fnToString%20%3D%20hasOwn.toString%3B%0A%0Avar%20ObjectFunctionString%20%3D%20fnToString.call%28%20Object%20%29%3B%0A%0Avar%20support%20%3D%20%7B%7D%3B%0A%0Avar%20isFunction%20%3D%20function%20isFunction%28%20obj%20%29%20%7B%0A%0A%20%20%20%20%20%20//%20Support%3A%20Chrome%20%3C%3D57%2C%20Firefox%20%3C%3D52%0A%20%20%20%20%20%20//%20In%20some%20browsers%2C%20typeof%20returns%20%22function%22%20for%20HTML%20%3Cobject%3E%20elements%0A%20%20%20%20%20%20//%20%28i.e.%2C%20%60typeof%20document.createElement%28%20%22object%22%20%29%20%3D%3D%3D%20%22function%22%60%29.%0A%20%20%20%20%20%20//%20We%20don%27t%20want%20to%20classify%20%2Aany%2A%20DOM%20node%20as%20a%20function.%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%26%26%20typeof%20obj.nodeType%20%21%3D%3D%20%22number%22%3B%0A%20%20%7D%3B%0A%0A%0Avar%20isWindow%20%3D%20function%20isWindow%28%20obj%20%29%20%7B%0A%09%09return%20obj%20%21%3D%20null%20%26%26%20obj%20%3D%3D%3D%20obj.window%3B%0A%09%7D%3B%0A%0A%0Avar%20document%20%3D%20window.document%3B%0A%0A%0A%0A%09var%20preservedScriptAttributes%20%3D%20%7B%0A%09%09type%3A%20true%2C%0A%09%09src%3A%20true%2C%0A%09%09nonce%3A%20true%2C%0A%09%09noModule%3A%20true%0A%09%7D%3B%0A%0A%09function%20DOMEval%28%20code%2C%20node%2C%20doc%20%29%20%7B%0A%09%09doc%20%3D%20doc%20%7C%7C%20document%3B%0A%0A%09%09var%20i%2C%20val%2C%0A%09%09%09script%20%3D%20doc.createElement%28%20%22script%22%20%29%3B%0A%0A%09%09script.text%20%3D%20code%3B%0A%09%09if%20%28%20node%20%29%20%7B%0A%09%09%09for%20%28%20i%20in%20preservedScriptAttributes%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2064%2B%2C%20Edge%2018%2B%0A%09%09%09%09//%20Some%20browsers%20don%27t%20support%20the%20%22nonce%22%20property%20on%20scripts.%0A%09%09%09%09//%20On%20the%20other%20hand%2C%20just%20using%20%60getAttribute%60%20is%20not%20enough%20as%0A%09%09%09%09//%20the%20%60nonce%60%20attribute%20is%20reset%20to%20an%20empty%20string%20whenever%20it%0A%09%09%09%09//%20becomes%20browsing-context%20connected.%0A%09%09%09%09//%20See%20https%3A//github.com/whatwg/html/issues/2369%0A%09%09%09%09//%20See%20https%3A//html.spec.whatwg.org/%23nonce-attributes%0A%09%09%09%09//%20The%20%60node.getAttribute%60%20check%20was%20added%20for%20the%20sake%20of%0A%09%09%09%09//%20%60jQuery.globalEval%60%20so%20that%20it%20can%20fake%20a%20nonce-containing%20node%0A%09%09%09%09//%20via%20an%20object.%0A%09%09%09%09val%20%3D%20node%5B%20i%20%5D%20%7C%7C%20node.getAttribute%20%26%26%20node.getAttribute%28%20i%20%29%3B%0A%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09script.setAttribute%28%20i%2C%20val%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09doc.head.appendChild%28%20script%20%29.parentNode.removeChild%28%20script%20%29%3B%0A%09%7D%0A%0A%0Afunction%20toType%28%20obj%20%29%20%7B%0A%09if%20%28%20obj%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20obj%20%2B%20%22%22%3B%0A%09%7D%0A%0A%09//%20Support%3A%20Android%20%3C%3D2.3%20only%20%28functionish%20RegExp%29%0A%09return%20typeof%20obj%20%3D%3D%3D%20%22object%22%20%7C%7C%20typeof%20obj%20%3D%3D%3D%20%22function%22%20%3F%0A%09%09class2type%5B%20toString.call%28%20obj%20%29%20%5D%20%7C%7C%20%22object%22%20%3A%0A%09%09typeof%20obj%3B%0A%7D%0A/%2A%20global%20Symbol%20%2A/%0A//%20Defining%20this%20global%20in%20.eslintrc.json%20would%20create%20a%20danger%20of%20using%20the%20global%0A//%20unguarded%20in%20another%20place%2C%20it%20seems%20safer%20to%20define%20global%20only%20for%20this%20module%0A%0A%0A%0Avar%0A%09version%20%3D%20%223.5.1%22%2C%0A%0A%09//%20Define%20a%20local%20copy%20of%20jQuery%0A%09jQuery%20%3D%20function%28%20selector%2C%20context%20%29%20%7B%0A%0A%09%09//%20The%20jQuery%20object%20is%20actually%20just%20the%20init%20constructor%20%27enhanced%27%0A%09%09//%20Need%20init%20if%20jQuery%20is%20called%20%28just%20allow%20error%20to%20be%20thrown%20if%20not%20included%29%0A%09%09return%20new%20jQuery.fn.init%28%20selector%2C%20context%20%29%3B%0A%09%7D%3B%0A%0AjQuery.fn%20%3D%20jQuery.prototype%20%3D%20%7B%0A%0A%09//%20The%20current%20version%20of%20jQuery%20being%20used%0A%09jquery%3A%20version%2C%0A%0A%09constructor%3A%20jQuery%2C%0A%0A%09//%20The%20default%20length%20of%20a%20jQuery%20object%20is%200%0A%09length%3A%200%2C%0A%0A%09toArray%3A%20function%28%29%20%7B%0A%09%09return%20slice.call%28%20this%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20the%20Nth%20element%20in%20the%20matched%20element%20set%20OR%0A%09//%20Get%20the%20whole%20matched%20element%20set%20as%20a%20clean%20array%0A%09get%3A%20function%28%20num%20%29%20%7B%0A%0A%09%09//%20Return%20all%20the%20elements%20in%20a%20clean%20array%0A%09%09if%20%28%20num%20%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20slice.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20just%20the%20one%20element%20from%20the%20set%0A%09%09return%20num%20%3C%200%20%3F%20this%5B%20num%20%2B%20this.length%20%5D%20%3A%20this%5B%20num%20%5D%3B%0A%09%7D%2C%0A%0A%09//%20Take%20an%20array%20of%20elements%20and%20push%20it%20onto%20the%20stack%0A%09//%20%28returning%20the%20new%20matched%20element%20set%29%0A%09pushStack%3A%20function%28%20elems%20%29%20%7B%0A%0A%09%09//%20Build%20a%20new%20jQuery%20matched%20element%20set%0A%09%09var%20ret%20%3D%20jQuery.merge%28%20this.constructor%28%29%2C%20elems%20%29%3B%0A%0A%09%09//%20Add%20the%20old%20object%20onto%20the%20stack%20%28as%20a%20reference%29%0A%09%09ret.prevObject%20%3D%20this%3B%0A%0A%09%09//%20Return%20the%20newly-formed%20element%20set%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09//%20Execute%20a%20callback%20for%20every%20element%20in%20the%20matched%20set.%0A%09each%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20jQuery.each%28%20this%2C%20callback%20%29%3B%0A%09%7D%2C%0A%0A%09map%3A%20function%28%20callback%20%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.map%28%20this%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20callback.call%28%20elem%2C%20i%2C%20elem%20%29%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09slice%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20slice.apply%28%20this%2C%20arguments%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09first%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%200%20%29%3B%0A%09%7D%2C%0A%0A%09last%3A%20function%28%29%20%7B%0A%09%09return%20this.eq%28%20-1%20%29%3B%0A%09%7D%2C%0A%0A%09even%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%28%20i%20%2B%201%20%29%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09odd%3A%20function%28%29%20%7B%0A%09%09return%20this.pushStack%28%20jQuery.grep%28%20this%2C%20function%28%20_elem%2C%20i%20%29%20%7B%0A%09%09%09return%20i%20%25%202%3B%0A%09%09%7D%20%29%20%29%3B%0A%09%7D%2C%0A%0A%09eq%3A%20function%28%20i%20%29%20%7B%0A%09%09var%20len%20%3D%20this.length%2C%0A%09%09%09j%20%3D%20%2Bi%20%2B%20%28%20i%20%3C%200%20%3F%20len%20%3A%200%20%29%3B%0A%09%09return%20this.pushStack%28%20j%20%3E%3D%200%20%26%26%20j%20%3C%20len%20%3F%20%5B%20this%5B%20j%20%5D%20%5D%20%3A%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09end%3A%20function%28%29%20%7B%0A%09%09return%20this.prevObject%20%7C%7C%20this.constructor%28%29%3B%0A%09%7D%2C%0A%0A%09//%20For%20internal%20use%20only.%0A%09//%20Behaves%20like%20an%20Array%27s%20method%2C%20not%20like%20a%20jQuery%20method.%0A%09push%3A%20push%2C%0A%09sort%3A%20arr.sort%2C%0A%09splice%3A%20arr.splice%0A%7D%3B%0A%0AjQuery.extend%20%3D%20jQuery.fn.extend%20%3D%20function%28%29%20%7B%0A%09var%20options%2C%20name%2C%20src%2C%20copy%2C%20copyIsArray%2C%20clone%2C%0A%09%09target%20%3D%20arguments%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09i%20%3D%201%2C%0A%09%09length%20%3D%20arguments.length%2C%0A%09%09deep%20%3D%20false%3B%0A%0A%09//%20Handle%20a%20deep%20copy%20situation%0A%09if%20%28%20typeof%20target%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09deep%20%3D%20target%3B%0A%0A%09%09//%20Skip%20the%20boolean%20and%20the%20target%0A%09%09target%20%3D%20arguments%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09i%2B%2B%3B%0A%09%7D%0A%0A%09//%20Handle%20case%20when%20target%20is%20a%20string%20or%20something%20%28possible%20in%20deep%20copy%29%0A%09if%20%28%20typeof%20target%20%21%3D%3D%20%22object%22%20%26%26%20%21isFunction%28%20target%20%29%20%29%20%7B%0A%09%09target%20%3D%20%7B%7D%3B%0A%09%7D%0A%0A%09//%20Extend%20jQuery%20itself%20if%20only%20one%20argument%20is%20passed%0A%09if%20%28%20i%20%3D%3D%3D%20length%20%29%20%7B%0A%09%09target%20%3D%20this%3B%0A%09%09i--%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%0A%09%09//%20Only%20deal%20with%20non-null/undefined%20values%0A%09%09if%20%28%20%28%20options%20%3D%20arguments%5B%20i%20%5D%20%29%20%21%3D%20null%20%29%20%7B%0A%0A%09%09%09//%20Extend%20the%20base%20object%0A%09%09%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09%09%09copy%20%3D%20options%5B%20name%20%5D%3B%0A%0A%09%09%09%09//%20Prevent%20Object.prototype%20pollution%0A%09%09%09%09//%20Prevent%20never-ending%20loop%0A%09%09%09%09if%20%28%20name%20%3D%3D%3D%20%22__proto__%22%20%7C%7C%20target%20%3D%3D%3D%20copy%20%29%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Recurse%20if%20we%27re%20merging%20plain%20objects%20or%20arrays%0A%09%09%09%09if%20%28%20deep%20%26%26%20copy%20%26%26%20%28%20jQuery.isPlainObject%28%20copy%20%29%20%7C%7C%0A%09%09%09%09%09%28%20copyIsArray%20%3D%20Array.isArray%28%20copy%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09src%20%3D%20target%5B%20name%20%5D%3B%0A%0A%09%09%09%09%09//%20Ensure%20proper%20type%20for%20the%20source%20value%0A%09%09%09%09%09if%20%28%20copyIsArray%20%26%26%20%21Array.isArray%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%5B%5D%3B%0A%09%09%09%09%09%7D%20else%20if%20%28%20%21copyIsArray%20%26%26%20%21jQuery.isPlainObject%28%20src%20%29%20%29%20%7B%0A%09%09%09%09%09%09clone%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09clone%20%3D%20src%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09copyIsArray%20%3D%20false%3B%0A%0A%09%09%09%09%09//%20Never%20move%20original%20objects%2C%20clone%20them%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20jQuery.extend%28%20deep%2C%20clone%2C%20copy%20%29%3B%0A%0A%09%09%09%09//%20Don%27t%20bring%20in%20undefined%20values%0A%09%09%09%09%7D%20else%20if%20%28%20copy%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09target%5B%20name%20%5D%20%3D%20copy%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20modified%20object%0A%09return%20target%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Unique%20for%20each%20copy%20of%20jQuery%20on%20the%20page%0A%09expando%3A%20%22jQuery%22%20%2B%20%28%20version%20%2B%20Math.random%28%29%20%29.replace%28%20/%5CD/g%2C%20%22%22%20%29%2C%0A%0A%09//%20Assume%20jQuery%20is%20ready%20without%20the%20ready%20module%0A%09isReady%3A%20true%2C%0A%0A%09error%3A%20function%28%20msg%20%29%20%7B%0A%09%09throw%20new%20Error%28%20msg%20%29%3B%0A%09%7D%2C%0A%0A%09noop%3A%20function%28%29%20%7B%7D%2C%0A%0A%09isPlainObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20proto%2C%20Ctor%3B%0A%0A%09%09//%20Detect%20obvious%20negatives%0A%09%09//%20Use%20toString%20instead%20of%20jQuery.type%20to%20catch%20host%20objects%0A%09%09if%20%28%20%21obj%20%7C%7C%20toString.call%28%20obj%20%29%20%21%3D%3D%20%22%5Bobject%20Object%5D%22%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%0A%09%09proto%20%3D%20getProto%28%20obj%20%29%3B%0A%0A%09%09//%20Objects%20with%20no%20prototype%20%28e.g.%2C%20%60Object.create%28%20null%20%29%60%29%20are%20plain%0A%09%09if%20%28%20%21proto%20%29%20%7B%0A%09%09%09return%20true%3B%0A%09%09%7D%0A%0A%09%09//%20Objects%20with%20prototype%20are%20plain%20iff%20they%20were%20constructed%20by%20a%20global%20Object%20function%0A%09%09Ctor%20%3D%20hasOwn.call%28%20proto%2C%20%22constructor%22%20%29%20%26%26%20proto.constructor%3B%0A%09%09return%20typeof%20Ctor%20%3D%3D%3D%20%22function%22%20%26%26%20fnToString.call%28%20Ctor%20%29%20%3D%3D%3D%20ObjectFunctionString%3B%0A%09%7D%2C%0A%0A%09isEmptyObject%3A%20function%28%20obj%20%29%20%7B%0A%09%09var%20name%3B%0A%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%09%09return%20true%3B%0A%09%7D%2C%0A%0A%09//%20Evaluates%20a%20script%20in%20a%20provided%20context%3B%20falls%20back%20to%20the%20global%20one%0A%09//%20if%20not%20specified.%0A%09globalEval%3A%20function%28%20code%2C%20options%2C%20doc%20%29%20%7B%0A%09%09DOMEval%28%20code%2C%20%7B%20nonce%3A%20options%20%26%26%20options.nonce%20%7D%2C%20doc%20%29%3B%0A%09%7D%2C%0A%0A%09each%3A%20function%28%20obj%2C%20callback%20%29%20%7B%0A%09%09var%20length%2C%20i%20%3D%200%3B%0A%0A%09%09if%20%28%20isArrayLike%28%20obj%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20obj.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20obj%20%29%20%7B%0A%09%09%09%09if%20%28%20callback.call%28%20obj%5B%20i%20%5D%2C%20i%2C%20obj%5B%20i%20%5D%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20obj%3B%0A%09%7D%2C%0A%0A%09//%20results%20is%20for%20internal%20usage%20only%0A%09makeArray%3A%20function%28%20arr%2C%20results%20%29%20%7B%0A%09%09var%20ret%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20arr%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20isArrayLike%28%20Object%28%20arr%20%29%20%29%20%29%20%7B%0A%09%09%09%09jQuery.merge%28%20ret%2C%0A%09%09%09%09%09typeof%20arr%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%5B%20arr%20%5D%20%3A%20arr%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.call%28%20ret%2C%20arr%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20ret%3B%0A%09%7D%2C%0A%0A%09inArray%3A%20function%28%20elem%2C%20arr%2C%20i%20%29%20%7B%0A%09%09return%20arr%20%3D%3D%20null%20%3F%20-1%20%3A%20indexOf.call%28%20arr%2C%20elem%2C%20i%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09merge%3A%20function%28%20first%2C%20second%20%29%20%7B%0A%09%09var%20len%20%3D%20%2Bsecond.length%2C%0A%09%09%09j%20%3D%200%2C%0A%09%09%09i%20%3D%20first.length%3B%0A%0A%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09first%5B%20i%2B%2B%20%5D%20%3D%20second%5B%20j%20%5D%3B%0A%09%09%7D%0A%0A%09%09first.length%20%3D%20i%3B%0A%0A%09%09return%20first%3B%0A%09%7D%2C%0A%0A%09grep%3A%20function%28%20elems%2C%20callback%2C%20invert%20%29%20%7B%0A%09%09var%20callbackInverse%2C%0A%09%09%09matches%20%3D%20%5B%5D%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09length%20%3D%20elems.length%2C%0A%09%09%09callbackExpect%20%3D%20%21invert%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20only%20saving%20the%20items%0A%09%09//%20that%20pass%20the%20validator%20function%0A%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09callbackInverse%20%3D%20%21callback%28%20elems%5B%20i%20%5D%2C%20i%20%29%3B%0A%09%09%09if%20%28%20callbackInverse%20%21%3D%3D%20callbackExpect%20%29%20%7B%0A%09%09%09%09matches.push%28%20elems%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20matches%3B%0A%09%7D%2C%0A%0A%09//%20arg%20is%20for%20internal%20usage%20only%0A%09map%3A%20function%28%20elems%2C%20callback%2C%20arg%20%29%20%7B%0A%09%09var%20length%2C%20value%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09ret%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Go%20through%20the%20array%2C%20translating%20each%20of%20the%20items%20to%20their%20new%20values%0A%09%09if%20%28%20isArrayLike%28%20elems%20%29%20%29%20%7B%0A%09%09%09length%20%3D%20elems.length%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Go%20through%20every%20key%20on%20the%20object%2C%0A%09%09%7D%20else%20%7B%0A%09%09%09for%20%28%20i%20in%20elems%20%29%20%7B%0A%09%09%09%09value%20%3D%20callback%28%20elems%5B%20i%20%5D%2C%20i%2C%20arg%20%29%3B%0A%0A%09%09%09%09if%20%28%20value%20%21%3D%20null%20%29%20%7B%0A%09%09%09%09%09ret.push%28%20value%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Flatten%20any%20nested%20arrays%0A%09%09return%20flat%28%20ret%20%29%3B%0A%09%7D%2C%0A%0A%09//%20A%20global%20GUID%20counter%20for%20objects%0A%09guid%3A%201%2C%0A%0A%09//%20jQuery.support%20is%20not%20used%20in%20Core%20but%20other%20projects%20attach%20their%0A%09//%20properties%20to%20it%20so%20it%20needs%20to%20exist.%0A%09support%3A%20support%0A%7D%20%29%3B%0A%0Aif%20%28%20typeof%20Symbol%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%09jQuery.fn%5B%20Symbol.iterator%20%5D%20%3D%20arr%5B%20Symbol.iterator%20%5D%3B%0A%7D%0A%0A//%20Populate%20the%20class2type%20map%0AjQuery.each%28%20%22Boolean%20Number%20String%20Function%20Array%20Date%20RegExp%20Object%20Error%20Symbol%22.split%28%20%22%20%22%20%29%2C%0Afunction%28%20_i%2C%20name%20%29%20%7B%0A%09class2type%5B%20%22%5Bobject%20%22%20%2B%20name%20%2B%20%22%5D%22%20%5D%20%3D%20name.toLowerCase%28%29%3B%0A%7D%20%29%3B%0A%0Afunction%20isArrayLike%28%20obj%20%29%20%7B%0A%0A%09//%20Support%3A%20real%20iOS%208.2%20only%20%28not%20reproducible%20in%20simulator%29%0A%09//%20%60in%60%20check%20used%20to%20prevent%20JIT%20error%20%28gh-2145%29%0A%09//%20hasOwn%20isn%27t%20used%20here%20due%20to%20false%20negatives%0A%09//%20regarding%20Nodelist%20length%20in%20IE%0A%09var%20length%20%3D%20%21%21obj%20%26%26%20%22length%22%20in%20obj%20%26%26%20obj.length%2C%0A%09%09type%20%3D%20toType%28%20obj%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20obj%20%29%20%7C%7C%20isWindow%28%20obj%20%29%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09return%20type%20%3D%3D%3D%20%22array%22%20%7C%7C%20length%20%3D%3D%3D%200%20%7C%7C%0A%09%09typeof%20length%20%3D%3D%3D%20%22number%22%20%26%26%20length%20%3E%200%20%26%26%20%28%20length%20-%201%20%29%20in%20obj%3B%0A%7D%0Avar%20Sizzle%20%3D%0A/%2A%21%0A%20%2A%20Sizzle%20CSS%20Selector%20Engine%20v2.3.5%0A%20%2A%20https%3A//sizzlejs.com/%0A%20%2A%0A%20%2A%20Copyright%20JS%20Foundation%20and%20other%20contributors%0A%20%2A%20Released%20under%20the%20MIT%20license%0A%20%2A%20https%3A//js.foundation/%0A%20%2A%0A%20%2A%20Date%3A%202020-03-14%0A%20%2A/%0A%28%20function%28%20window%20%29%20%7B%0Avar%20i%2C%0A%09support%2C%0A%09Expr%2C%0A%09getText%2C%0A%09isXML%2C%0A%09tokenize%2C%0A%09compile%2C%0A%09select%2C%0A%09outermostContext%2C%0A%09sortInput%2C%0A%09hasDuplicate%2C%0A%0A%09//%20Local%20document%20vars%0A%09setDocument%2C%0A%09document%2C%0A%09docElem%2C%0A%09documentIsHTML%2C%0A%09rbuggyQSA%2C%0A%09rbuggyMatches%2C%0A%09matches%2C%0A%09contains%2C%0A%0A%09//%20Instance-specific%20data%0A%09expando%20%3D%20%22sizzle%22%20%2B%201%20%2A%20new%20Date%28%29%2C%0A%09preferredDoc%20%3D%20window.document%2C%0A%09dirruns%20%3D%200%2C%0A%09done%20%3D%200%2C%0A%09classCache%20%3D%20createCache%28%29%2C%0A%09tokenCache%20%3D%20createCache%28%29%2C%0A%09compilerCache%20%3D%20createCache%28%29%2C%0A%09nonnativeSelectorCache%20%3D%20createCache%28%29%2C%0A%09sortOrder%20%3D%20function%28%20a%2C%20b%20%29%20%7B%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%7D%0A%09%09return%200%3B%0A%09%7D%2C%0A%0A%09//%20Instance%20methods%0A%09hasOwn%20%3D%20%28%20%7B%7D%20%29.hasOwnProperty%2C%0A%09arr%20%3D%20%5B%5D%2C%0A%09pop%20%3D%20arr.pop%2C%0A%09pushNative%20%3D%20arr.push%2C%0A%09push%20%3D%20arr.push%2C%0A%09slice%20%3D%20arr.slice%2C%0A%0A%09//%20Use%20a%20stripped-down%20indexOf%20as%20it%27s%20faster%20than%20native%0A%09//%20https%3A//jsperf.com/thor-indexof-vs-for/5%0A%09indexOf%20%3D%20function%28%20list%2C%20elem%20%29%20%7B%0A%09%09var%20i%20%3D%200%2C%0A%09%09%09len%20%3D%20list.length%3B%0A%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20list%5B%20i%20%5D%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09return%20i%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20-1%3B%0A%09%7D%2C%0A%0A%09booleans%20%3D%20%22checked%7Cselected%7Casync%7Cautofocus%7Cautoplay%7Ccontrols%7Cdefer%7Cdisabled%7Chidden%7C%22%20%2B%0A%09%09%22ismap%7Cloop%7Cmultiple%7Copen%7Creadonly%7Crequired%7Cscoped%22%2C%0A%0A%09//%20Regular%20expressions%0A%0A%09//%20http%3A//www.w3.org/TR/css3-selectors/%23whitespace%0A%09whitespace%20%3D%20%22%5B%5C%5Cx20%5C%5Ct%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%2C%0A%0A%09//%20https%3A//www.w3.org/TR/css-syntax-3/%23ident-token-diagram%0A%09identifier%20%3D%20%22%28%3F%3A%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%0A%09%09%22%3F%7C%5C%5C%5C%5C%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%7C%5B%5C%5Cw-%5D%7C%5B%5E%5C0-%5C%5Cx7f%5D%29%2B%22%2C%0A%0A%09//%20Attribute%20selectors%3A%20http%3A//www.w3.org/TR/selectors/%23attribute-selectors%0A%09attributes%20%3D%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20Operator%20%28capture%202%29%0A%09%09%22%2A%28%5B%2A%5E%24%7C%21~%5D%3F%3D%29%22%20%2B%20whitespace%20%2B%0A%0A%09%09//%20%22Attribute%20values%20must%20be%20CSS%20identifiers%20%5Bcapture%205%5D%0A%09%09//%20or%20strings%20%5Bcapture%203%20or%20capture%204%5D%22%0A%09%09%22%2A%28%3F%3A%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%7C%28%22%20%2B%20identifier%20%2B%20%22%29%29%7C%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2A%5C%5C%5D%22%2C%0A%0A%09pseudos%20%3D%20%22%3A%28%22%20%2B%20identifier%20%2B%20%22%29%28%3F%3A%5C%5C%28%28%22%20%2B%0A%0A%09%09//%20To%20reduce%20the%20number%20of%20selectors%20needing%20tokenize%20in%20the%20preFilter%2C%20prefer%20arguments%3A%0A%09%09//%201.%20quoted%20%28capture%203%3B%20capture%204%20or%20capture%205%29%0A%09%09%22%28%27%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%27%5D%29%2A%29%27%7C%5C%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%5C%22%5D%29%2A%29%5C%22%29%7C%22%20%2B%0A%0A%09%09//%202.%20simple%20%28capture%206%29%0A%09%09%22%28%28%3F%3A%5C%5C%5C%5C.%7C%5B%5E%5C%5C%5C%5C%28%29%5B%5C%5C%5D%5D%7C%22%20%2B%20attributes%20%2B%20%22%29%2A%29%7C%22%20%2B%0A%0A%09%09//%203.%20anything%20else%20%28capture%202%29%0A%09%09%22.%2A%22%20%2B%0A%09%09%22%29%5C%5C%29%7C%29%22%2C%0A%0A%09//%20Leading%20and%20non-escaped%20trailing%20whitespace%2C%20capturing%20some%20non-whitespace%20characters%20preceding%20the%20latter%0A%09rwhitespace%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%2B%22%2C%20%22g%22%20%29%2C%0A%09rtrim%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2B%7C%28%28%3F%3A%5E%7C%5B%5E%5C%5C%5C%5C%5D%29%28%3F%3A%5C%5C%5C%5C.%29%2A%29%22%20%2B%0A%09%09whitespace%20%2B%20%22%2B%24%22%2C%20%22g%22%20%29%2C%0A%0A%09rcomma%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%2C%22%20%2B%20whitespace%20%2B%20%22%2A%22%20%29%2C%0A%09rcombinators%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%20%22%2A%28%5B%3E%2B~%5D%7C%22%20%2B%20whitespace%20%2B%20%22%29%22%20%2B%20whitespace%20%2B%0A%09%09%22%2A%22%20%29%2C%0A%09rdescend%20%3D%20new%20RegExp%28%20whitespace%20%2B%20%22%7C%3E%22%20%29%2C%0A%0A%09rpseudo%20%3D%20new%20RegExp%28%20pseudos%20%29%2C%0A%09ridentifier%20%3D%20new%20RegExp%28%20%22%5E%22%20%2B%20identifier%20%2B%20%22%24%22%20%29%2C%0A%0A%09matchExpr%20%3D%20%7B%0A%09%09%22ID%22%3A%20new%20RegExp%28%20%22%5E%23%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22CLASS%22%3A%20new%20RegExp%28%20%22%5E%5C%5C.%28%22%20%2B%20identifier%20%2B%20%22%29%22%20%29%2C%0A%09%09%22TAG%22%3A%20new%20RegExp%28%20%22%5E%28%22%20%2B%20identifier%20%2B%20%22%7C%5B%2A%5D%29%22%20%29%2C%0A%09%09%22ATTR%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20attributes%20%29%2C%0A%09%09%22PSEUDO%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20pseudos%20%29%2C%0A%09%09%22CHILD%22%3A%20new%20RegExp%28%20%22%5E%3A%28only%7Cfirst%7Clast%7Cnth%7Cnth-last%29-%28child%7Cof-type%29%28%3F%3A%5C%5C%28%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28even%7Codd%7C%28%28%5B%2B-%5D%7C%29%28%5C%5Cd%2A%29n%7C%29%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%28%5B%2B-%5D%7C%29%22%20%2B%0A%09%09%09whitespace%20%2B%20%22%2A%28%5C%5Cd%2B%29%7C%29%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%22%2C%20%22i%22%20%29%2C%0A%09%09%22bool%22%3A%20new%20RegExp%28%20%22%5E%28%3F%3A%22%20%2B%20booleans%20%2B%20%22%29%24%22%2C%20%22i%22%20%29%2C%0A%0A%09%09//%20For%20use%20in%20libraries%20implementing%20.is%28%29%0A%09%09//%20We%20use%20this%20for%20POS%20matching%20in%20%60select%60%0A%09%09%22needsContext%22%3A%20new%20RegExp%28%20%22%5E%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%5B%3E%2B~%5D%7C%3A%28even%7Codd%7Ceq%7Cgt%7Clt%7Cnth%7Cfirst%7Clast%29%28%3F%3A%5C%5C%28%22%20%2B%20whitespace%20%2B%0A%09%09%09%22%2A%28%28%3F%3A-%5C%5Cd%29%3F%5C%5Cd%2A%29%22%20%2B%20whitespace%20%2B%20%22%2A%5C%5C%29%7C%29%28%3F%3D%5B%5E-%5D%7C%24%29%22%2C%20%22i%22%20%29%0A%09%7D%2C%0A%0A%09rhtml%20%3D%20/HTML%24/i%2C%0A%09rinputs%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rheader%20%3D%20/%5Eh%5Cd%24/i%2C%0A%0A%09rnative%20%3D%20/%5E%5B%5E%7B%5D%2B%5C%7B%5Cs%2A%5C%5Bnative%20%5Cw/%2C%0A%0A%09//%20Easily-parseable/retrievable%20ID%20or%20TAG%20or%20CLASS%20selectors%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%23%28%5B%5Cw-%5D%2B%29%7C%28%5Cw%2B%29%7C%5C.%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09rsibling%20%3D%20/%5B%2B~%5D/%2C%0A%0A%09//%20CSS%20escapes%0A%09//%20http%3A//www.w3.org/TR/CSS21/syndata.html%23escaped-characters%0A%09runescape%20%3D%20new%20RegExp%28%20%22%5C%5C%5C%5C%5B%5C%5Cda-fA-F%5D%7B1%2C6%7D%22%20%2B%20whitespace%20%2B%20%22%3F%7C%5C%5C%5C%5C%28%5B%5E%5C%5Cr%5C%5Cn%5C%5Cf%5D%29%22%2C%20%22g%22%20%29%2C%0A%09funescape%20%3D%20function%28%20escape%2C%20nonHex%20%29%20%7B%0A%09%09var%20high%20%3D%20%220x%22%20%2B%20escape.slice%28%201%20%29%20-%200x10000%3B%0A%0A%09%09return%20nonHex%20%3F%0A%0A%09%09%09//%20Strip%20the%20backslash%20prefix%20from%20a%20non-hex%20escape%20sequence%0A%09%09%09nonHex%20%3A%0A%0A%09%09%09//%20Replace%20a%20hexadecimal%20escape%20sequence%20with%20the%20encoded%20Unicode%20code%20point%0A%09%09%09//%20Support%3A%20IE%20%3C%3D11%2B%0A%09%09%09//%20For%20values%20outside%20the%20Basic%20Multilingual%20Plane%20%28BMP%29%2C%20manually%20construct%20a%0A%09%09%09//%20surrogate%20pair%0A%09%09%09high%20%3C%200%20%3F%0A%09%09%09%09String.fromCharCode%28%20high%20%2B%200x10000%20%29%20%3A%0A%09%09%09%09String.fromCharCode%28%20high%20%3E%3E%2010%20%7C%200xD800%2C%20high%20%26%200x3FF%20%7C%200xDC00%20%29%3B%0A%09%7D%2C%0A%0A%09//%20CSS%20string/identifier%20serialization%0A%09//%20https%3A//drafts.csswg.org/cssom/%23common-serializing-idioms%0A%09rcssescape%20%3D%20/%28%5B%5C0-%5Cx1f%5Cx7f%5D%7C%5E-%3F%5Cd%29%7C%5E-%24%7C%5B%5E%5C0-%5Cx1f%5Cx7f-%5CuFFFF%5Cw-%5D/g%2C%0A%09fcssescape%20%3D%20function%28%20ch%2C%20asCodePoint%20%29%20%7B%0A%09%09if%20%28%20asCodePoint%20%29%20%7B%0A%0A%09%09%09//%20U%2B0000%20NULL%20becomes%20U%2BFFFD%20REPLACEMENT%20CHARACTER%0A%09%09%09if%20%28%20ch%20%3D%3D%3D%20%22%5C0%22%20%29%20%7B%0A%09%09%09%09return%20%22%5CuFFFD%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Control%20characters%20and%20%28dependent%20upon%20position%29%20numbers%20get%20escaped%20as%20code%20points%0A%09%09%09return%20ch.slice%28%200%2C%20-1%20%29%20%2B%20%22%5C%5C%22%20%2B%0A%09%09%09%09ch.charCodeAt%28%20ch.length%20-%201%20%29.toString%28%2016%20%29%20%2B%20%22%20%22%3B%0A%09%09%7D%0A%0A%09%09//%20Other%20potentially-special%20ASCII%20characters%20get%20backslash-escaped%0A%09%09return%20%22%5C%5C%22%20%2B%20ch%3B%0A%09%7D%2C%0A%0A%09//%20Used%20for%20iframes%0A%09//%20See%20setDocument%28%29%0A%09//%20Removing%20the%20function%20wrapper%20causes%20a%20%22Permission%20Denied%22%0A%09//%20error%20in%20IE%0A%09unloadHandler%20%3D%20function%28%29%20%7B%0A%09%09setDocument%28%29%3B%0A%09%7D%2C%0A%0A%09inDisabledFieldset%20%3D%20addCombinator%28%0A%09%09function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20true%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22fieldset%22%3B%0A%09%09%7D%2C%0A%09%09%7B%20dir%3A%20%22parentNode%22%2C%20next%3A%20%22legend%22%20%7D%0A%09%29%3B%0A%0A//%20Optimize%20for%20push.apply%28%20_%2C%20NodeList%20%29%0Atry%20%7B%0A%09push.apply%28%0A%09%09%28%20arr%20%3D%20slice.call%28%20preferredDoc.childNodes%20%29%20%29%2C%0A%09%09preferredDoc.childNodes%0A%09%29%3B%0A%0A%09//%20Support%3A%20Android%3C4.0%0A%09//%20Detect%20silently%20failing%20push.apply%0A%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09arr%5B%20preferredDoc.childNodes.length%20%5D.nodeType%3B%0A%7D%20catch%20%28%20e%20%29%20%7B%0A%09push%20%3D%20%7B%20apply%3A%20arr.length%20%3F%0A%0A%09%09//%20Leverage%20slice%20if%20possible%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09pushNative.apply%28%20target%2C%20slice.call%28%20els%20%29%20%29%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Support%3A%20IE%3C9%0A%09%09//%20Otherwise%20append%20directly%0A%09%09function%28%20target%2C%20els%20%29%20%7B%0A%09%09%09var%20j%20%3D%20target.length%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09//%20Can%27t%20trust%20NodeList.length%0A%09%09%09while%20%28%20%28%20target%5B%20j%2B%2B%20%5D%20%3D%20els%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%7D%0A%09%09%09target.length%20%3D%20j%20-%201%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0Afunction%20Sizzle%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20m%2C%20i%2C%20elem%2C%20nid%2C%20match%2C%20groups%2C%20newSelector%2C%0A%09%09newContext%20%3D%20context%20%26%26%20context.ownerDocument%2C%0A%0A%09%09//%20nodeType%20defaults%20to%209%2C%20since%20context%20defaults%20to%20document%0A%09%09nodeType%20%3D%20context%20%3F%20context.nodeType%20%3A%209%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Return%20early%20from%20calls%20with%20invalid%20selector%20or%20context%0A%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%7C%7C%20%21selector%20%7C%7C%0A%09%09nodeType%20%21%3D%3D%201%20%26%26%20nodeType%20%21%3D%3D%209%20%26%26%20nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%0A%09%09return%20results%3B%0A%09%7D%0A%0A%09//%20Try%20to%20shortcut%20find%20operations%20%28as%20opposed%20to%20filters%29%20in%20HTML%20documents%0A%09if%20%28%20%21seed%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%09context%20%3D%20context%20%7C%7C%20document%3B%0A%0A%09%09if%20%28%20documentIsHTML%20%29%20%7B%0A%0A%09%09%09//%20If%20the%20selector%20is%20sufficiently%20simple%2C%20try%20using%20a%20%22get%2ABy%2A%22%20DOM%20method%0A%09%09%09//%20%28excepting%20DocumentFragment%20context%2C%20where%20the%20methods%20don%27t%20exist%29%0A%09%09%09if%20%28%20nodeType%20%21%3D%3D%2011%20%26%26%20%28%20match%20%3D%20rquickExpr.exec%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20ID%20selector%0A%09%09%09%09if%20%28%20%28%20m%20%3D%20match%5B%201%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Document%20context%0A%09%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20context.getElementById%28%20m%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09%09if%20%28%20elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%09%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Element%20context%0A%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2C%20Opera%2C%20Webkit%0A%09%09%09%09%09%09//%20TODO%3A%20identify%20versions%0A%09%09%09%09%09%09//%20getElementById%20can%20match%20elements%20by%20name%20instead%20of%20ID%0A%09%09%09%09%09%09if%20%28%20newContext%20%26%26%20%28%20elem%20%3D%20newContext.getElementById%28%20m%20%29%20%29%20%26%26%0A%09%09%09%09%09%09%09contains%28%20context%2C%20elem%20%29%20%26%26%0A%09%09%09%09%09%09%09elem.id%20%3D%3D%3D%20m%20%29%20%7B%0A%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20Type%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20match%5B%202%20%5D%20%29%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByTagName%28%20selector%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%0A%09%09%09%09//%20Class%20selector%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20m%20%3D%20match%5B%203%20%5D%20%29%20%26%26%20support.getElementsByClassName%20%26%26%0A%09%09%09%09%09context.getElementsByClassName%20%29%20%7B%0A%0A%09%09%09%09%09push.apply%28%20results%2C%20context.getElementsByClassName%28%20m%20%29%20%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Take%20advantage%20of%20querySelectorAll%0A%09%09%09if%20%28%20support.qsa%20%26%26%0A%09%09%09%09%21nonnativeSelectorCache%5B%20selector%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%09%09%28%20%21rbuggyQSA%20%7C%7C%20%21rbuggyQSA.test%28%20selector%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%208%20only%0A%09%09%09%09//%20Exclude%20object%20elements%0A%09%09%09%09%28%20nodeType%20%21%3D%3D%201%20%7C%7C%20context.nodeName.toLowerCase%28%29%20%21%3D%3D%20%22object%22%20%29%20%29%20%7B%0A%0A%09%09%09%09newSelector%20%3D%20selector%3B%0A%09%09%09%09newContext%20%3D%20context%3B%0A%0A%09%09%09%09//%20qSA%20considers%20elements%20outside%20a%20scoping%20root%20when%20evaluating%20child%20or%0A%09%09%09%09//%20descendant%20combinators%2C%20which%20is%20not%20what%20we%20want.%0A%09%09%09%09//%20In%20such%20cases%2C%20we%20work%20around%20the%20behavior%20by%20prefixing%20every%20selector%20in%20the%0A%09%09%09%09//%20list%20with%20an%20ID%20selector%20referencing%20the%20scope%20context.%0A%09%09%09%09//%20The%20technique%20has%20to%20be%20used%20as%20well%20when%20a%20leading%20combinator%20is%20used%0A%09%09%09%09//%20as%20such%20selectors%20are%20not%20recognized%20by%20querySelectorAll.%0A%09%09%09%09//%20Thanks%20to%20Andrew%20Dupont%20for%20this%20technique.%0A%09%09%09%09if%20%28%20nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%28%20rdescend.test%28%20selector%20%29%20%7C%7C%20rcombinators.test%28%20selector%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Expand%20context%20for%20sibling%20selectors%0A%09%09%09%09%09newContext%20%3D%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%3B%0A%0A%09%09%09%09%09//%20We%20can%20use%20%3Ascope%20instead%20of%20the%20ID%20hack%20if%20the%20browser%0A%09%09%09%09%09//%20supports%20it%20%26%20if%20we%27re%20not%20changing%20the%20context.%0A%09%09%09%09%09if%20%28%20newContext%20%21%3D%3D%20context%20%7C%7C%20%21support.scope%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Capture%20the%20context%20ID%2C%20setting%20it%20first%20if%20necessary%0A%09%09%09%09%09%09if%20%28%20%28%20nid%20%3D%20context.getAttribute%28%20%22id%22%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09nid%20%3D%20nid.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09context.setAttribute%28%20%22id%22%2C%20%28%20nid%20%3D%20expando%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prefix%20every%20selector%20in%20the%20list%0A%09%09%09%09%09groups%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%09%09%09i%20%3D%20groups.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09groups%5B%20i%20%5D%20%3D%20%28%20nid%20%3F%20%22%23%22%20%2B%20nid%20%3A%20%22%3Ascope%22%20%29%20%2B%20%22%20%22%20%2B%0A%09%09%09%09%09%09%09toSelector%28%20groups%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09newSelector%20%3D%20groups.join%28%20%22%2C%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09push.apply%28%20results%2C%0A%09%09%09%09%09%09newContext.querySelectorAll%28%20newSelector%20%29%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%09return%20results%3B%0A%09%09%09%09%7D%20catch%20%28%20qsaError%20%29%20%7B%0A%09%09%09%09%09nonnativeSelectorCache%28%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%20finally%20%7B%0A%09%09%09%09%09if%20%28%20nid%20%3D%3D%3D%20expando%20%29%20%7B%0A%09%09%09%09%09%09context.removeAttribute%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20All%20others%0A%09return%20select%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%20context%2C%20results%2C%20seed%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Create%20key-value%20caches%20of%20limited%20size%0A%20%2A%20%40returns%20%7Bfunction%28string%2C%20object%29%7D%20Returns%20the%20Object%20data%20after%20storing%20it%20on%20itself%20with%0A%20%2A%09property%20name%20the%20%28space-suffixed%29%20string%20and%20%28if%20the%20cache%20is%20larger%20than%20Expr.cacheLength%29%0A%20%2A%09deleting%20the%20oldest%20entry%0A%20%2A/%0Afunction%20createCache%28%29%20%7B%0A%09var%20keys%20%3D%20%5B%5D%3B%0A%0A%09function%20cache%28%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20Use%20%28key%20%2B%20%22%20%22%29%20to%20avoid%20collision%20with%20native%20prototype%20properties%20%28see%20Issue%20%23157%29%0A%09%09if%20%28%20keys.push%28%20key%20%2B%20%22%20%22%20%29%20%3E%20Expr.cacheLength%20%29%20%7B%0A%0A%09%09%09//%20Only%20keep%20the%20most%20recent%20entries%0A%09%09%09delete%20cache%5B%20keys.shift%28%29%20%5D%3B%0A%09%09%7D%0A%09%09return%20%28%20cache%5B%20key%20%2B%20%22%20%22%20%5D%20%3D%20value%20%29%3B%0A%09%7D%0A%09return%20cache%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Mark%20a%20function%20for%20special%20use%20by%20Sizzle%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20The%20function%20to%20mark%0A%20%2A/%0Afunction%20markFunction%28%20fn%20%29%20%7B%0A%09fn%5B%20expando%20%5D%20%3D%20true%3B%0A%09return%20fn%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Support%20testing%20using%20an%20element%0A%20%2A%20%40param%20%7BFunction%7D%20fn%20Passed%20the%20created%20element%20and%20returns%20a%20boolean%20result%0A%20%2A/%0Afunction%20assert%28%20fn%20%29%20%7B%0A%09var%20el%20%3D%20document.createElement%28%20%22fieldset%22%20%29%3B%0A%0A%09try%20%7B%0A%09%09return%20%21%21fn%28%20el%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%20finally%20%7B%0A%0A%09%09//%20Remove%20from%20its%20parent%20by%20default%0A%09%09if%20%28%20el.parentNode%20%29%20%7B%0A%09%09%09el.parentNode.removeChild%28%20el%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20release%20memory%20in%20IE%0A%09%09el%20%3D%20null%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Adds%20the%20same%20handler%20for%20all%20of%20the%20specified%20attrs%0A%20%2A%20%40param%20%7BString%7D%20attrs%20Pipe-separated%20list%20of%20attributes%0A%20%2A%20%40param%20%7BFunction%7D%20handler%20The%20method%20that%20will%20be%20applied%0A%20%2A/%0Afunction%20addHandle%28%20attrs%2C%20handler%20%29%20%7B%0A%09var%20arr%20%3D%20attrs.split%28%20%22%7C%22%20%29%2C%0A%09%09i%20%3D%20arr.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09Expr.attrHandle%5B%20arr%5B%20i%20%5D%20%5D%20%3D%20handler%3B%0A%09%7D%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20document%20order%20of%20two%20siblings%0A%20%2A%20%40param%20%7BElement%7D%20a%0A%20%2A%20%40param%20%7BElement%7D%20b%0A%20%2A%20%40returns%20%7BNumber%7D%20Returns%20less%20than%200%20if%20a%20precedes%20b%2C%20greater%20than%200%20if%20a%20follows%20b%0A%20%2A/%0Afunction%20siblingCheck%28%20a%2C%20b%20%29%20%7B%0A%09var%20cur%20%3D%20b%20%26%26%20a%2C%0A%09%09diff%20%3D%20cur%20%26%26%20a.nodeType%20%3D%3D%3D%201%20%26%26%20b.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09a.sourceIndex%20-%20b.sourceIndex%3B%0A%0A%09//%20Use%20IE%20sourceIndex%20if%20available%20on%20both%20nodes%0A%09if%20%28%20diff%20%29%20%7B%0A%09%09return%20diff%3B%0A%09%7D%0A%0A%09//%20Check%20if%20b%20follows%20a%0A%09if%20%28%20cur%20%29%20%7B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.nextSibling%20%29%20%29%20%7B%0A%09%09%09if%20%28%20cur%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20a%20%3F%201%20%3A%20-1%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20input%20types%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createInputPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20buttons%0A%20%2A%20%40param%20%7BString%7D%20type%0A%20%2A/%0Afunction%20createButtonPseudo%28%20type%20%29%20%7B%0A%09return%20function%28%20elem%20%29%20%7B%0A%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09return%20%28%20name%20%3D%3D%3D%20%22input%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%20%29%20%26%26%20elem.type%20%3D%3D%3D%20type%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20%3Aenabled/%3Adisabled%0A%20%2A%20%40param%20%7BBoolean%7D%20disabled%20true%20for%20%3Adisabled%3B%20false%20for%20%3Aenabled%0A%20%2A/%0Afunction%20createDisabledPseudo%28%20disabled%20%29%20%7B%0A%0A%09//%20Known%20%3Adisabled%20false%20positives%3A%20fieldset%5Bdisabled%5D%20%3E%20legend%3Anth-of-type%28n%2B2%29%20%3Acan-disable%0A%09return%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Only%20certain%20elements%20can%20match%20%3Aenabled%20or%20%3Adisabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-enabled%0A%09%09//%20https%3A//html.spec.whatwg.org/multipage/scripting.html%23selector-disabled%0A%09%09if%20%28%20%22form%22%20in%20elem%20%29%20%7B%0A%0A%09%09%09//%20Check%20for%20inherited%20disabledness%20on%20relevant%20non-disabled%20elements%3A%0A%09%09%09//%20%2A%20listed%20form-associated%20elements%20in%20a%20disabled%20fieldset%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23category-listed%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-fe-disabled%0A%09%09%09//%20%2A%20option%20elements%20in%20a%20disabled%20optgroup%0A%09%09%09//%20%20%20https%3A//html.spec.whatwg.org/multipage/forms.html%23concept-option-disabled%0A%09%09%09//%20All%20such%20elements%20have%20a%20%22form%22%20property.%0A%09%09%09if%20%28%20elem.parentNode%20%26%26%20elem.disabled%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09//%20Option%20elements%20defer%20to%20a%20parent%20optgroup%20if%20present%0A%09%09%09%09if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%22label%22%20in%20elem.parentNode%20%29%20%7B%0A%09%09%09%09%09%09return%20elem.parentNode.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20IE%206%20-%2011%0A%09%09%09%09//%20Use%20the%20isDisabled%20shortcut%20property%20to%20check%20for%20disabled%20fieldset%20ancestors%0A%09%09%09%09return%20elem.isDisabled%20%3D%3D%3D%20disabled%20%7C%7C%0A%0A%09%09%09%09%09//%20Where%20there%20is%20no%20isDisabled%2C%20check%20manually%0A%09%09%09%09%09/%2A%20jshint%20-W018%20%2A/%0A%09%09%09%09%09elem.isDisabled%20%21%3D%3D%20%21disabled%20%26%26%0A%09%09%09%09%09inDisabledFieldset%28%20elem%20%29%20%3D%3D%3D%20disabled%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%0A%09%09//%20Try%20to%20winnow%20out%20elements%20that%20can%27t%20be%20disabled%20before%20trusting%20the%20disabled%20property.%0A%09%09//%20Some%20victims%20get%20caught%20in%20our%20net%20%28label%2C%20legend%2C%20menu%2C%20track%29%2C%20but%20it%20shouldn%27t%0A%09%09//%20even%20exist%20on%20them%2C%20let%20alone%20have%20a%20boolean%20value.%0A%09%09%7D%20else%20if%20%28%20%22label%22%20in%20elem%20%29%20%7B%0A%09%09%09return%20elem.disabled%20%3D%3D%3D%20disabled%3B%0A%09%09%7D%0A%0A%09%09//%20Remaining%20elements%20are%20neither%20%3Aenabled%20nor%20%3Adisabled%0A%09%09return%20false%3B%0A%09%7D%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Returns%20a%20function%20to%20use%20in%20pseudos%20for%20positionals%0A%20%2A%20%40param%20%7BFunction%7D%20fn%0A%20%2A/%0Afunction%20createPositionalPseudo%28%20fn%20%29%20%7B%0A%09return%20markFunction%28%20function%28%20argument%20%29%20%7B%0A%09%09argument%20%3D%20%2Bargument%3B%0A%09%09return%20markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09var%20j%2C%0A%09%09%09%09matchIndexes%20%3D%20fn%28%20%5B%5D%2C%20seed.length%2C%20argument%20%29%2C%0A%09%09%09%09i%20%3D%20matchIndexes.length%3B%0A%0A%09%09%09//%20Match%20elements%20found%20at%20the%20specified%20indexes%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20seed%5B%20%28%20j%20%3D%20matchIndexes%5B%20i%20%5D%20%29%20%5D%20%29%20%7B%0A%09%09%09%09%09seed%5B%20j%20%5D%20%3D%20%21%28%20matches%5B%20j%20%5D%20%3D%20seed%5B%20j%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%2A%0A%20%2A%20Checks%20a%20node%20for%20validity%20as%20a%20Sizzle%20context%0A%20%2A%20%40param%20%7BElement%7CObject%3D%7D%20context%0A%20%2A%20%40returns%20%7BElement%7CObject%7CBoolean%7D%20The%20input%20node%20if%20acceptable%2C%20otherwise%20a%20falsy%20value%0A%20%2A/%0Afunction%20testContext%28%20context%20%29%20%7B%0A%09return%20context%20%26%26%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%26%26%20context%3B%0A%7D%0A%0A//%20Expose%20support%20vars%20for%20convenience%0Asupport%20%3D%20Sizzle.support%20%3D%20%7B%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Detects%20XML%20nodes%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20elem%20An%20element%20or%20a%20document%0A%20%2A%20%40returns%20%7BBoolean%7D%20True%20iff%20elem%20is%20a%20non-HTML%20XML%20node%0A%20%2A/%0AisXML%20%3D%20Sizzle.isXML%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20namespace%20%3D%20elem.namespaceURI%2C%0A%09%09docElem%20%3D%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29.documentElement%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D8%0A%09//%20Assume%20HTML%20when%20documentElement%20doesn%27t%20yet%20exist%2C%20such%20as%20inside%20loading%20iframes%0A%09//%20https%3A//bugs.jquery.com/ticket/4833%0A%09return%20%21rhtml.test%28%20namespace%20%7C%7C%20docElem%20%26%26%20docElem.nodeName%20%7C%7C%20%22HTML%22%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Sets%20document-related%20variables%20once%20based%20on%20the%20current%20document%0A%20%2A%20%40param%20%7BElement%7CObject%7D%20%5Bdoc%5D%20An%20element%20or%20document%20object%20to%20use%20to%20set%20the%20document%0A%20%2A%20%40returns%20%7BObject%7D%20Returns%20the%20current%20document%0A%20%2A/%0AsetDocument%20%3D%20Sizzle.setDocument%20%3D%20function%28%20node%20%29%20%7B%0A%09var%20hasCompare%2C%20subWindow%2C%0A%09%09doc%20%3D%20node%20%3F%20node.ownerDocument%20%7C%7C%20node%20%3A%20preferredDoc%3B%0A%0A%09//%20Return%20early%20if%20doc%20is%20invalid%20or%20already%20selected%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20doc%20%3D%3D%20document%20%7C%7C%20doc.nodeType%20%21%3D%3D%209%20%7C%7C%20%21doc.documentElement%20%29%20%7B%0A%09%09return%20document%3B%0A%09%7D%0A%0A%09//%20Update%20global%20variables%0A%09document%20%3D%20doc%3B%0A%09docElem%20%3D%20document.documentElement%3B%0A%09documentIsHTML%20%3D%20%21isXML%28%20document%20%29%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%0A%09//%20Accessing%20iframe%20documents%20after%20unload%20throws%20%22permission%20denied%22%20errors%20%28jQuery%20%2313936%29%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20preferredDoc%20%21%3D%20document%20%26%26%0A%09%09%28%20subWindow%20%3D%20document.defaultView%20%29%20%26%26%20subWindow.top%20%21%3D%3D%20subWindow%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%2011%2C%20Edge%0A%09%09if%20%28%20subWindow.addEventListener%20%29%20%7B%0A%09%09%09subWindow.addEventListener%28%20%22unload%22%2C%20unloadHandler%2C%20false%20%29%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2010%20only%0A%09%09%7D%20else%20if%20%28%20subWindow.attachEvent%20%29%20%7B%0A%09%09%09subWindow.attachEvent%28%20%22onunload%22%2C%20unloadHandler%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Support%3A%20IE%208%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20Chrome%20%3C%3D16%20-%2025%20only%2C%20Firefox%20%3C%3D3.6%20-%2031%20only%2C%0A%09//%20Safari%204%20-%205%20only%2C%20Opera%20%3C%3D11.6%20-%2012.x%20only%0A%09//%20IE/Edge%20%26%20older%20browsers%20don%27t%20support%20the%20%3Ascope%20pseudo-class.%0A%09//%20Support%3A%20Safari%206.0%20only%0A%09//%20Safari%206.0%20supports%20%3Ascope%20but%20it%27s%20an%20alias%20of%20%3Aroot%20there.%0A%09support.scope%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%3B%0A%09%09return%20typeof%20el.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%21el.querySelectorAll%28%20%22%3Ascope%20fieldset%20div%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20Attributes%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Support%3A%20IE%3C8%0A%09//%20Verify%20that%20getAttribute%20really%20returns%20attributes%20and%20not%20properties%0A%09//%20%28excepting%20IE8%20booleans%29%0A%09support.attributes%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.className%20%3D%20%22i%22%3B%0A%09%09return%20%21el.getAttribute%28%20%22className%22%20%29%3B%0A%09%7D%20%29%3B%0A%0A%09/%2A%20getElement%28s%29By%2A%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Check%20if%20getElementsByTagName%28%22%2A%22%29%20returns%20only%20elements%0A%09support.getElementsByTagName%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09el.appendChild%28%20document.createComment%28%20%22%22%20%29%20%29%3B%0A%09%09return%20%21el.getElementsByTagName%28%20%22%2A%22%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C9%0A%09support.getElementsByClassName%20%3D%20rnative.test%28%20document.getElementsByClassName%20%29%3B%0A%0A%09//%20Support%3A%20IE%3C10%0A%09//%20Check%20if%20getElementById%20returns%20elements%20by%20name%0A%09//%20The%20broken%20getElementById%20methods%20don%27t%20pick%20up%20programmatically-set%20names%2C%0A%09//%20so%20use%20a%20roundabout%20getElementsByName%20test%0A%09support.getById%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%09%09docElem.appendChild%28%20el%20%29.id%20%3D%20expando%3B%0A%09%09return%20%21document.getElementsByName%20%7C%7C%20%21document.getElementsByName%28%20expando%20%29.length%3B%0A%09%7D%20%29%3B%0A%0A%09//%20ID%20filter%20and%20find%0A%09if%20%28%20support.getById%20%29%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20elem.getAttribute%28%20%22id%22%20%29%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%09%09%09%09return%20elem%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20else%20%7B%0A%09%09Expr.filter%5B%20%22ID%22%20%5D%20%3D%20%20function%28%20id%20%29%20%7B%0A%09%09%09var%20attrId%20%3D%20id.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20node%20%3D%20typeof%20elem.getAttributeNode%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09return%20node%20%26%26%20node.value%20%3D%3D%3D%20attrId%3B%0A%09%09%09%7D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Support%3A%20IE%206%20-%207%20only%0A%09%09//%20getElementById%20is%20not%20reliable%20as%20a%20find%20shortcut%0A%09%09Expr.find%5B%20%22ID%22%20%5D%20%3D%20function%28%20id%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementById%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09%09var%20node%2C%20i%2C%20elems%2C%0A%09%09%09%09%09elem%20%3D%20context.getElementById%28%20id%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09//%20Verify%20the%20id%20attribute%0A%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Fall%20back%20on%20getElementsByName%0A%09%09%09%09%09elems%20%3D%20context.getElementsByName%28%20id%20%29%3B%0A%09%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20elem%20%3D%20elems%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09node%20%3D%20elem.getAttributeNode%28%20%22id%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20node%20%26%26%20node.value%20%3D%3D%3D%20id%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%5B%20elem%20%5D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20%5B%5D%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%0A%09//%20Tag%0A%09Expr.find%5B%20%22TAG%22%20%5D%20%3D%20support.getElementsByTagName%20%3F%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09%09return%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20DocumentFragment%20nodes%20don%27t%20have%20gEBTN%0A%09%09%09%7D%20else%20if%20%28%20support.qsa%20%29%20%7B%0A%09%09%09%09return%20context.querySelectorAll%28%20tag%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%3A%0A%0A%09%09function%28%20tag%2C%20context%20%29%20%7B%0A%09%09%09var%20elem%2C%0A%09%09%09%09tmp%20%3D%20%5B%5D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%0A%09%09%09%09//%20By%20happy%20coincidence%2C%20a%20%28broken%29%20gEBTN%20appears%20on%20DocumentFragment%20nodes%20too%0A%09%09%09%09results%20%3D%20context.getElementsByTagName%28%20tag%20%29%3B%0A%0A%09%09%09//%20Filter%20out%20possible%20comments%0A%09%09%09if%20%28%20tag%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09tmp.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20tmp%3B%0A%09%09%09%7D%0A%09%09%09return%20results%3B%0A%09%09%7D%3B%0A%0A%09//%20Class%0A%09Expr.find%5B%20%22CLASS%22%20%5D%20%3D%20support.getElementsByClassName%20%26%26%20function%28%20className%2C%20context%20%29%20%7B%0A%09%09if%20%28%20typeof%20context.getElementsByClassName%20%21%3D%3D%20%22undefined%22%20%26%26%20documentIsHTML%20%29%20%7B%0A%09%09%09return%20context.getElementsByClassName%28%20className%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09/%2A%20QSA/matchesSelector%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20QSA%20and%20matchesSelector%20support%0A%0A%09//%20matchesSelector%28%3Aactive%29%20reports%20false%20when%20true%20%28IE9/Opera%2011.5%29%0A%09rbuggyMatches%20%3D%20%5B%5D%3B%0A%0A%09//%20qSa%28%3Afocus%29%20reports%20false%20when%20true%20%28Chrome%2021%29%0A%09//%20We%20allow%20this%20because%20of%20a%20bug%20in%20IE8/9%20that%20throws%20an%20error%0A%09//%20whenever%20%60document.activeElement%60%20is%20accessed%20on%20an%20iframe%0A%09//%20So%2C%20we%20allow%20%3Afocus%20to%20pass%20through%20QSA%20all%20the%20time%20to%20avoid%20the%20IE%20error%0A%09//%20See%20https%3A//bugs.jquery.com/ticket/13378%0A%09rbuggyQSA%20%3D%20%5B%5D%3B%0A%0A%09if%20%28%20%28%20support.qsa%20%3D%20rnative.test%28%20document.querySelectorAll%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Build%20QSA%20regex%0A%09%09//%20Regex%20strategy%20adopted%20from%20Diego%20Perini%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09var%20input%3B%0A%0A%09%09%09//%20Select%20is%20set%20to%20empty%20string%20on%20purpose%0A%09%09%09//%20This%20is%20to%20test%20IE%27s%20treatment%20of%20not%20explicitly%0A%09%09%09//%20setting%20a%20boolean%20content%20attribute%2C%0A%09%09%09//%20since%20its%20presence%20should%20be%20enough%0A%09%09%09//%20https%3A//bugs.jquery.com/ticket/12359%0A%09%09%09docElem.appendChild%28%20el%20%29.innerHTML%20%3D%20%22%3Ca%20id%3D%27%22%20%2B%20expando%20%2B%20%22%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20id%3D%27%22%20%2B%20expando%20%2B%20%22-%5Cr%5C%5C%27%20msallowcapture%3D%27%27%3E%22%20%2B%0A%09%09%09%09%22%3Coption%20selected%3D%27%27%3E%3C/option%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20IE8%2C%20Opera%2011-12.16%0A%09%09%09//%20Nothing%20should%20be%20selected%20when%20empty%20strings%20follow%20%5E%3D%20or%20%24%3D%20or%20%2A%3D%0A%09%09%09//%20The%20test%20attribute%20must%20be%20unknown%20in%20Opera%20but%20%22safe%22%20for%20WinRT%0A%09%09%09//%20https%3A//msdn.microsoft.com/en-us/library/ie/hh465388.aspx%23attribute_section%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bmsallowcapture%5E%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5B%2A%5E%24%5D%3D%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Boolean%20attributes%20and%20%22value%22%20are%20not%20treated%20correctly%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bselected%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2A%28%3F%3Avalue%7C%22%20%2B%20booleans%20%2B%20%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Chrome%3C29%2C%20Android%3C4.4%2C%20Safari%3C7.0%2B%2C%20iOS%3C7.0%2B%2C%20PhantomJS%3C1.9.8%2B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bid~%3D%22%20%2B%20expando%20%2B%20%22-%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22~%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09%09//%20IE%2011/Edge%20don%27t%20find%20elements%20on%20a%20%60%5Bname%3D%27%27%5D%60%20query%20in%20some%20cases.%0A%09%09%09//%20Adding%20a%20temporary%20attribute%20to%20the%20document%20before%20the%20selection%20works%0A%09%09%09//%20around%20the%20issue.%0A%09%09%09//%20Interestingly%2C%20IE%2010%20%26%20older%20don%27t%20seem%20to%20have%20the%20issue.%0A%09%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22name%22%2C%20%22%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29%3B%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%5Bname%3D%27%27%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%5C%5C%5B%22%20%2B%20whitespace%20%2B%20%22%2Aname%22%20%2B%20whitespace%20%2B%20%22%2A%3D%22%20%2B%0A%09%09%09%09%09whitespace%20%2B%20%22%2A%28%3F%3A%27%27%7C%5C%22%5C%22%29%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Webkit/Opera%20-%20%3Achecked%20should%20return%20selected%20option%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22%3Achecked%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Achecked%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Safari%208%2B%2C%20iOS%208%2B%0A%09%09%09//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D136851%0A%09%09%09//%20In-page%20%60selector%23id%20sibling-combinator%20selector%60%20fails%0A%09%09%09if%20%28%20%21el.querySelectorAll%28%20%22a%23%22%20%2B%20expando%20%2B%20%22%2B%2A%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22.%23.%2B%5B%2B~%5D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D3.6%20-%205%20only%0A%09%09%09//%20Old%20Firefox%20doesn%27t%20throw%20on%20a%20badly-escaped%20identifier.%0A%09%09%09el.querySelectorAll%28%20%22%5C%5C%5Cf%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%5B%5C%5Cr%5C%5Cn%5C%5Cf%5D%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%09%09%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%27%20disabled%3D%27disabled%27%3E%3C/a%3E%22%20%2B%0A%09%09%09%09%22%3Cselect%20disabled%3D%27disabled%27%3E%3Coption/%3E%3C/select%3E%22%3B%0A%0A%09%09%09//%20Support%3A%20Windows%208%20Native%20Apps%0A%09%09%09//%20The%20type%20and%20name%20attributes%20are%20restricted%20during%20.innerHTML%20assignment%0A%09%09%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09%09%09input.setAttribute%28%20%22type%22%2C%20%22hidden%22%20%29%3B%0A%09%09%09el.appendChild%28%20input%20%29.setAttribute%28%20%22name%22%2C%20%22D%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE8%0A%09%09%09//%20Enforce%20case-sensitivity%20of%20name%20attribute%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%5Bname%3Dd%5D%22%20%29.length%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22name%22%20%2B%20whitespace%20%2B%20%22%2A%5B%2A%5E%24%7C%21~%5D%3F%3D%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20FF%203.5%20-%20%3Aenabled/%3Adisabled%20and%20hidden%20elements%20%28hidden%20elements%20are%20still%20enabled%29%0A%09%09%09//%20IE8%20throws%20error%20here%20and%20will%20not%20see%20later%20tests%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Aenabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE9-11%2B%0A%09%09%09//%20IE%27s%20%3Adisabled%20selector%20does%20not%20pick%20up%20the%20children%20of%20disabled%20fieldsets%0A%09%09%09docElem.appendChild%28%20el%20%29.disabled%20%3D%20true%3B%0A%09%09%09if%20%28%20el.querySelectorAll%28%20%22%3Adisabled%22%20%29.length%20%21%3D%3D%202%20%29%20%7B%0A%09%09%09%09rbuggyQSA.push%28%20%22%3Aenabled%22%2C%20%22%3Adisabled%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20Opera%2010%20-%2011%20only%0A%09%09%09//%20Opera%2010-11%20does%20not%20throw%20on%20post-comma%20invalid%20pseudos%0A%09%09%09el.querySelectorAll%28%20%22%2A%2C%3Ax%22%20%29%3B%0A%09%09%09rbuggyQSA.push%28%20%22%2C.%2A%3A%22%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20%28%20support.matchesSelector%20%3D%20rnative.test%28%20%28%20matches%20%3D%20docElem.matches%20%7C%7C%0A%09%09docElem.webkitMatchesSelector%20%7C%7C%0A%09%09docElem.mozMatchesSelector%20%7C%7C%0A%09%09docElem.oMatchesSelector%20%7C%7C%0A%09%09docElem.msMatchesSelector%20%29%20%29%20%29%20%29%20%7B%0A%0A%09%09assert%28%20function%28%20el%20%29%20%7B%0A%0A%09%09%09//%20Check%20to%20see%20if%20it%27s%20possible%20to%20do%20matchesSelector%0A%09%09%09//%20on%20a%20disconnected%20node%20%28IE%209%29%0A%09%09%09support.disconnectedMatch%20%3D%20matches.call%28%20el%2C%20%22%2A%22%20%29%3B%0A%0A%09%09%09//%20This%20should%20fail%20with%20an%20exception%0A%09%09%09//%20Gecko%20does%20not%20error%2C%20returns%20false%20instead%0A%09%09%09matches.call%28%20el%2C%20%22%5Bs%21%3D%27%27%5D%3Ax%22%20%29%3B%0A%09%09%09rbuggyMatches.push%28%20%22%21%3D%22%2C%20pseudos%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09rbuggyQSA%20%3D%20rbuggyQSA.length%20%26%26%20new%20RegExp%28%20rbuggyQSA.join%28%20%22%7C%22%20%29%20%29%3B%0A%09rbuggyMatches%20%3D%20rbuggyMatches.length%20%26%26%20new%20RegExp%28%20rbuggyMatches.join%28%20%22%7C%22%20%29%20%29%3B%0A%0A%09/%2A%20Contains%0A%09----------------------------------------------------------------------%20%2A/%0A%09hasCompare%20%3D%20rnative.test%28%20docElem.compareDocumentPosition%20%29%3B%0A%0A%09//%20Element%20contains%20another%0A%09//%20Purposefully%20self-exclusive%0A%09//%20As%20in%2C%20an%20element%20does%20not%20contain%20itself%0A%09contains%20%3D%20hasCompare%20%7C%7C%20rnative.test%28%20docElem.contains%20%29%20%3F%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09var%20adown%20%3D%20a.nodeType%20%3D%3D%3D%209%20%3F%20a.documentElement%20%3A%20a%2C%0A%09%09%09%09bup%20%3D%20b%20%26%26%20b.parentNode%3B%0A%09%09%09return%20a%20%3D%3D%3D%20bup%20%7C%7C%20%21%21%28%20bup%20%26%26%20bup.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09adown.contains%20%3F%0A%09%09%09%09%09adown.contains%28%20bup%20%29%20%3A%0A%09%09%09%09%09a.compareDocumentPosition%20%26%26%20a.compareDocumentPosition%28%20bup%20%29%20%26%2016%0A%09%09%09%29%20%29%3B%0A%09%09%7D%20%3A%0A%09%09function%28%20a%2C%20b%20%29%20%7B%0A%09%09%09if%20%28%20b%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20b%20%3D%20b.parentNode%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20b%20%3D%3D%3D%20a%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%0A%09/%2A%20Sorting%0A%09----------------------------------------------------------------------%20%2A/%0A%0A%09//%20Document%20order%20sorting%0A%09sortOrder%20%3D%20hasCompare%20%3F%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Flag%20for%20duplicate%20removal%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09//%20Sort%20on%20method%20existence%20if%20only%20one%20input%20has%20compareDocumentPosition%0A%09%09var%20compare%20%3D%20%21a.compareDocumentPosition%20-%20%21b.compareDocumentPosition%3B%0A%09%09if%20%28%20compare%20%29%20%7B%0A%09%09%09return%20compare%3B%0A%09%09%7D%0A%0A%09%09//%20Calculate%20position%20if%20both%20inputs%20belong%20to%20the%20same%20document%0A%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09compare%20%3D%20%28%20a.ownerDocument%20%7C%7C%20a%20%29%20%3D%3D%20%28%20b.ownerDocument%20%7C%7C%20b%20%29%20%3F%0A%09%09%09a.compareDocumentPosition%28%20b%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20we%20know%20they%20are%20disconnected%0A%09%09%091%3B%0A%0A%09%09//%20Disconnected%20nodes%0A%09%09if%20%28%20compare%20%26%201%20%7C%7C%0A%09%09%09%28%20%21support.sortDetached%20%26%26%20b.compareDocumentPosition%28%20a%20%29%20%3D%3D%3D%20compare%20%29%20%29%20%7B%0A%0A%09%09%09//%20Choose%20the%20first%20element%20that%20is%20related%20to%20our%20preferred%20document%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20a%20%3D%3D%20document%20%7C%7C%20a.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20a%20%29%20%29%20%7B%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09if%20%28%20b%20%3D%3D%20document%20%7C%7C%20b.ownerDocument%20%3D%3D%20preferredDoc%20%26%26%0A%09%09%09%09contains%28%20preferredDoc%2C%20b%20%29%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Maintain%20original%20order%0A%09%09%09return%20sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%09%09%7D%0A%0A%09%09return%20compare%20%26%204%20%3F%20-1%20%3A%201%3B%0A%09%7D%20%3A%0A%09function%28%20a%2C%20b%20%29%20%7B%0A%0A%09%09//%20Exit%20early%20if%20the%20nodes%20are%20identical%0A%09%09if%20%28%20a%20%3D%3D%3D%20b%20%29%20%7B%0A%09%09%09hasDuplicate%20%3D%20true%3B%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09aup%20%3D%20a.parentNode%2C%0A%09%09%09bup%20%3D%20b.parentNode%2C%0A%09%09%09ap%20%3D%20%5B%20a%20%5D%2C%0A%09%09%09bp%20%3D%20%5B%20b%20%5D%3B%0A%0A%09%09//%20Parentless%20nodes%20are%20either%20documents%20or%20disconnected%0A%09%09if%20%28%20%21aup%20%7C%7C%20%21bup%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09return%20a%20%3D%3D%20document%20%3F%20-1%20%3A%0A%09%09%09%09b%20%3D%3D%20document%20%3F%201%20%3A%0A%09%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%09%09aup%20%3F%20-1%20%3A%0A%09%09%09%09bup%20%3F%201%20%3A%0A%09%09%09%09sortInput%20%3F%0A%09%09%09%09%28%20indexOf%28%20sortInput%2C%20a%20%29%20-%20indexOf%28%20sortInput%2C%20b%20%29%20%29%20%3A%0A%09%09%09%090%3B%0A%0A%09%09//%20If%20the%20nodes%20are%20siblings%2C%20we%20can%20do%20a%20quick%20check%0A%09%09%7D%20else%20if%20%28%20aup%20%3D%3D%3D%20bup%20%29%20%7B%0A%09%09%09return%20siblingCheck%28%20a%2C%20b%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%20we%20need%20full%20lists%20of%20their%20ancestors%20for%20comparison%0A%09%09cur%20%3D%20a%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09ap.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%09%09cur%20%3D%20b%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20cur.parentNode%20%29%20%29%20%7B%0A%09%09%09bp.unshift%28%20cur%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Walk%20down%20the%20tree%20looking%20for%20a%20discrepancy%0A%09%09while%20%28%20ap%5B%20i%20%5D%20%3D%3D%3D%20bp%5B%20i%20%5D%20%29%20%7B%0A%09%09%09i%2B%2B%3B%0A%09%09%7D%0A%0A%09%09return%20i%20%3F%0A%0A%09%09%09//%20Do%20a%20sibling%20check%20if%20the%20nodes%20have%20a%20common%20ancestor%0A%09%09%09siblingCheck%28%20ap%5B%20i%20%5D%2C%20bp%5B%20i%20%5D%20%29%20%3A%0A%0A%09%09%09//%20Otherwise%20nodes%20in%20our%20document%20sort%20first%0A%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09/%2A%20eslint-disable%20eqeqeq%20%2A/%0A%09%09%09ap%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%20-1%20%3A%0A%09%09%09bp%5B%20i%20%5D%20%3D%3D%20preferredDoc%20%3F%201%20%3A%0A%09%09%09/%2A%20eslint-enable%20eqeqeq%20%2A/%0A%09%09%090%3B%0A%09%7D%3B%0A%0A%09return%20document%3B%0A%7D%3B%0A%0ASizzle.matches%20%3D%20function%28%20expr%2C%20elements%20%29%20%7B%0A%09return%20Sizzle%28%20expr%2C%20null%2C%20null%2C%20elements%20%29%3B%0A%7D%3B%0A%0ASizzle.matchesSelector%20%3D%20function%28%20elem%2C%20expr%20%29%20%7B%0A%09setDocument%28%20elem%20%29%3B%0A%0A%09if%20%28%20support.matchesSelector%20%26%26%20documentIsHTML%20%26%26%0A%09%09%21nonnativeSelectorCache%5B%20expr%20%2B%20%22%20%22%20%5D%20%26%26%0A%09%09%28%20%21rbuggyMatches%20%7C%7C%20%21rbuggyMatches.test%28%20expr%20%29%20%29%20%26%26%0A%09%09%28%20%21rbuggyQSA%20%20%20%20%20%7C%7C%20%21rbuggyQSA.test%28%20expr%20%29%20%29%20%29%20%7B%0A%0A%09%09try%20%7B%0A%09%09%09var%20ret%20%3D%20matches.call%28%20elem%2C%20expr%20%29%3B%0A%0A%09%09%09//%20IE%209%27s%20matchesSelector%20returns%20false%20on%20disconnected%20nodes%0A%09%09%09if%20%28%20ret%20%7C%7C%20support.disconnectedMatch%20%7C%7C%0A%0A%09%09%09%09//%20As%20well%2C%20disconnected%20nodes%20are%20said%20to%20be%20in%20a%20document%0A%09%09%09%09//%20fragment%20in%20IE%209%0A%09%09%09%09elem.document%20%26%26%20elem.document.nodeType%20%21%3D%3D%2011%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09nonnativeSelectorCache%28%20expr%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20Sizzle%28%20expr%2C%20document%2C%20null%2C%20%5B%20elem%20%5D%20%29.length%20%3E%200%3B%0A%7D%3B%0A%0ASizzle.contains%20%3D%20function%28%20context%2C%20elem%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20context.ownerDocument%20%7C%7C%20context%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20context%20%29%3B%0A%09%7D%0A%09return%20contains%28%20context%2C%20elem%20%29%3B%0A%7D%3B%0A%0ASizzle.attr%20%3D%20function%28%20elem%2C%20name%20%29%20%7B%0A%0A%09//%20Set%20document%20vars%20if%20needed%0A%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09//%20eslint-disable-next-line%20eqeqeq%0A%09if%20%28%20%28%20elem.ownerDocument%20%7C%7C%20elem%20%29%20%21%3D%20document%20%29%20%7B%0A%09%09setDocument%28%20elem%20%29%3B%0A%09%7D%0A%0A%09var%20fn%20%3D%20Expr.attrHandle%5B%20name.toLowerCase%28%29%20%5D%2C%0A%0A%09%09//%20Don%27t%20get%20fooled%20by%20Object.prototype%20properties%20%28jQuery%20%2313807%29%0A%09%09val%20%3D%20fn%20%26%26%20hasOwn.call%28%20Expr.attrHandle%2C%20name.toLowerCase%28%29%20%29%20%3F%0A%09%09%09fn%28%20elem%2C%20name%2C%20%21documentIsHTML%20%29%20%3A%0A%09%09%09undefined%3B%0A%0A%09return%20val%20%21%3D%3D%20undefined%20%3F%0A%09%09val%20%3A%0A%09%09support.attributes%20%7C%7C%20%21documentIsHTML%20%3F%0A%09%09%09elem.getAttribute%28%20name%20%29%20%3A%0A%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09val.value%20%3A%0A%09%09%09%09null%3B%0A%7D%3B%0A%0ASizzle.escape%20%3D%20function%28%20sel%20%29%20%7B%0A%09return%20%28%20sel%20%2B%20%22%22%20%29.replace%28%20rcssescape%2C%20fcssescape%20%29%3B%0A%7D%3B%0A%0ASizzle.error%20%3D%20function%28%20msg%20%29%20%7B%0A%09throw%20new%20Error%28%20%22Syntax%20error%2C%20unrecognized%20expression%3A%20%22%20%2B%20msg%20%29%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Document%20sorting%20and%20removing%20duplicates%0A%20%2A%20%40param%20%7BArrayLike%7D%20results%0A%20%2A/%0ASizzle.uniqueSort%20%3D%20function%28%20results%20%29%20%7B%0A%09var%20elem%2C%0A%09%09duplicates%20%3D%20%5B%5D%2C%0A%09%09j%20%3D%200%2C%0A%09%09i%20%3D%200%3B%0A%0A%09//%20Unless%20we%20%2Aknow%2A%20we%20can%20detect%20duplicates%2C%20assume%20their%20presence%0A%09hasDuplicate%20%3D%20%21support.detectDuplicates%3B%0A%09sortInput%20%3D%20%21support.sortStable%20%26%26%20results.slice%28%200%20%29%3B%0A%09results.sort%28%20sortOrder%20%29%3B%0A%0A%09if%20%28%20hasDuplicate%20%29%20%7B%0A%09%09while%20%28%20%28%20elem%20%3D%20results%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%3D%3D%3D%20results%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09j%20%3D%20duplicates.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09results.splice%28%20duplicates%5B%20j%20%5D%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Clear%20input%20after%20sorting%20to%20release%20objects%0A%09//%20See%20https%3A//github.com/jquery/sizzle/pull/225%0A%09sortInput%20%3D%20null%3B%0A%0A%09return%20results%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20Utility%20function%20for%20retrieving%20the%20text%20value%20of%20an%20array%20of%20DOM%20nodes%0A%20%2A%20%40param%20%7BArray%7CElement%7D%20elem%0A%20%2A/%0AgetText%20%3D%20Sizzle.getText%20%3D%20function%28%20elem%20%29%20%7B%0A%09var%20node%2C%0A%09%09ret%20%3D%20%22%22%2C%0A%09%09i%20%3D%200%2C%0A%09%09nodeType%20%3D%20elem.nodeType%3B%0A%0A%09if%20%28%20%21nodeType%20%29%20%7B%0A%0A%09%09//%20If%20no%20nodeType%2C%20this%20is%20expected%20to%20be%20an%20array%0A%09%09while%20%28%20%28%20node%20%3D%20elem%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09//%20Do%20not%20traverse%20comment%20nodes%0A%09%09%09ret%20%2B%3D%20getText%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%201%20%7C%7C%20nodeType%20%3D%3D%3D%209%20%7C%7C%20nodeType%20%3D%3D%3D%2011%20%29%20%7B%0A%0A%09%09//%20Use%20textContent%20for%20elements%0A%09%09//%20innerText%20usage%20removed%20for%20consistency%20of%20new%20lines%20%28jQuery%20%2311153%29%0A%09%09if%20%28%20typeof%20elem.textContent%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20elem.textContent%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Traverse%20its%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09ret%20%2B%3D%20getText%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20else%20if%20%28%20nodeType%20%3D%3D%3D%203%20%7C%7C%20nodeType%20%3D%3D%3D%204%20%29%20%7B%0A%09%09return%20elem.nodeValue%3B%0A%09%7D%0A%0A%09//%20Do%20not%20include%20comment%20or%20processing%20instruction%20nodes%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0AExpr%20%3D%20Sizzle.selectors%20%3D%20%7B%0A%0A%09//%20Can%20be%20adjusted%20by%20the%20user%0A%09cacheLength%3A%2050%2C%0A%0A%09createPseudo%3A%20markFunction%2C%0A%0A%09match%3A%20matchExpr%2C%0A%0A%09attrHandle%3A%20%7B%7D%2C%0A%0A%09find%3A%20%7B%7D%2C%0A%0A%09relative%3A%20%7B%0A%09%09%22%3E%22%3A%20%7B%20dir%3A%20%22parentNode%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22%20%22%3A%20%7B%20dir%3A%20%22parentNode%22%20%7D%2C%0A%09%09%22%2B%22%3A%20%7B%20dir%3A%20%22previousSibling%22%2C%20first%3A%20true%20%7D%2C%0A%09%09%22~%22%3A%20%7B%20dir%3A%20%22previousSibling%22%20%7D%0A%09%7D%2C%0A%0A%09preFilter%3A%20%7B%0A%09%09%22ATTR%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09//%20Move%20the%20given%20value%20to%20match%5B3%5D%20whether%20quoted%20or%20unquoted%0A%09%09%09match%5B%203%20%5D%20%3D%20%28%20match%5B%203%20%5D%20%7C%7C%20match%5B%204%20%5D%20%7C%7C%0A%09%09%09%09match%5B%205%20%5D%20%7C%7C%20%22%22%20%29.replace%28%20runescape%2C%20funescape%20%29%3B%0A%0A%09%09%09if%20%28%20match%5B%202%20%5D%20%3D%3D%3D%20%22~%3D%22%20%29%20%7B%0A%09%09%09%09match%5B%203%20%5D%20%3D%20%22%20%22%20%2B%20match%5B%203%20%5D%20%2B%20%22%20%22%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match.slice%28%200%2C%204%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20match%20%29%20%7B%0A%0A%09%09%09/%2A%20matches%20from%20matchExpr%5B%22CHILD%22%5D%0A%09%09%09%091%20type%20%28only%7Cnth%7C...%29%0A%09%09%09%092%20what%20%28child%7Cof-type%29%0A%09%09%09%093%20argument%20%28even%7Codd%7C%5Cd%2A%7C%5Cd%2An%28%5B%2B-%5D%5Cd%2B%29%3F%7C...%29%0A%09%09%09%094%20xn-component%20of%20xn%2By%20argument%20%28%5B%2B-%5D%3F%5Cd%2An%7C%29%0A%09%09%09%095%20sign%20of%20xn-component%0A%09%09%09%096%20x%20of%20xn-component%0A%09%09%09%097%20sign%20of%20y-component%0A%09%09%09%098%20y%20of%20y-component%0A%09%09%09%2A/%0A%09%09%09match%5B%201%20%5D%20%3D%20match%5B%201%20%5D.toLowerCase%28%29%3B%0A%0A%09%09%09if%20%28%20match%5B%201%20%5D.slice%28%200%2C%203%20%29%20%3D%3D%3D%20%22nth%22%20%29%20%7B%0A%0A%09%09%09%09//%20nth-%2A%20requires%20argument%0A%09%09%09%09if%20%28%20%21match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20numeric%20x%20and%20y%20parameters%20for%20Expr.filter.CHILD%0A%09%09%09%09//%20remember%20that%20false/true%20cast%20respectively%20to%200/1%0A%09%09%09%09match%5B%204%20%5D%20%3D%20%2B%28%20match%5B%204%20%5D%20%3F%0A%09%09%09%09%09match%5B%205%20%5D%20%2B%20%28%20match%5B%206%20%5D%20%7C%7C%201%20%29%20%3A%0A%09%09%09%09%092%20%2A%20%28%20match%5B%203%20%5D%20%3D%3D%3D%20%22even%22%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%20%29%3B%0A%09%09%09%09match%5B%205%20%5D%20%3D%20%2B%28%20%28%20match%5B%207%20%5D%20%2B%20match%5B%208%20%5D%20%29%20%7C%7C%20match%5B%203%20%5D%20%3D%3D%3D%20%22odd%22%20%29%3B%0A%0A%09%09%09%09//%20other%20types%20prohibit%20arguments%0A%09%09%09%7D%20else%20if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20match%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20match%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20match%20%29%20%7B%0A%09%09%09var%20excess%2C%0A%09%09%09%09unquoted%20%3D%20%21match%5B%206%20%5D%20%26%26%20match%5B%202%20%5D%3B%0A%0A%09%09%09if%20%28%20matchExpr%5B%20%22CHILD%22%20%5D.test%28%20match%5B%200%20%5D%20%29%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Accept%20quoted%20arguments%20as-is%0A%09%09%09if%20%28%20match%5B%203%20%5D%20%29%20%7B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20match%5B%204%20%5D%20%7C%7C%20match%5B%205%20%5D%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Strip%20excess%20characters%20from%20unquoted%20arguments%0A%09%09%09%7D%20else%20if%20%28%20unquoted%20%26%26%20rpseudo.test%28%20unquoted%20%29%20%26%26%0A%0A%09%09%09%09//%20Get%20excess%20from%20tokenize%20%28recursively%29%0A%09%09%09%09%28%20excess%20%3D%20tokenize%28%20unquoted%2C%20true%20%29%20%29%20%26%26%0A%0A%09%09%09%09//%20advance%20to%20the%20next%20closing%20parenthesis%0A%09%09%09%09%28%20excess%20%3D%20unquoted.indexOf%28%20%22%29%22%2C%20unquoted.length%20-%20excess%20%29%20-%20unquoted.length%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20excess%20is%20a%20negative%20index%0A%09%09%09%09match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%09match%5B%202%20%5D%20%3D%20unquoted.slice%28%200%2C%20excess%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Return%20only%20captures%20needed%20by%20the%20pseudo%20filter%20method%20%28type%20and%20argument%29%0A%09%09%09return%20match.slice%28%200%2C%203%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09filter%3A%20%7B%0A%0A%09%09%22TAG%22%3A%20function%28%20nodeNameSelector%20%29%20%7B%0A%09%09%09var%20nodeName%20%3D%20nodeNameSelector.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20nodeNameSelector%20%3D%3D%3D%20%22%2A%22%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20nodeName%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CLASS%22%3A%20function%28%20className%20%29%20%7B%0A%09%09%09var%20pattern%20%3D%20classCache%5B%20className%20%2B%20%22%20%22%20%5D%3B%0A%0A%09%09%09return%20pattern%20%7C%7C%0A%09%09%09%09%28%20pattern%20%3D%20new%20RegExp%28%20%22%28%5E%7C%22%20%2B%20whitespace%20%2B%0A%09%09%09%09%09%22%29%22%20%2B%20className%20%2B%20%22%28%22%20%2B%20whitespace%20%2B%20%22%7C%24%29%22%20%29%20%29%20%26%26%20classCache%28%0A%09%09%09%09%09%09className%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09return%20pattern.test%28%0A%09%09%09%09%09%09%09%09typeof%20elem.className%20%3D%3D%3D%20%22string%22%20%26%26%20elem.className%20%7C%7C%0A%09%09%09%09%09%09%09%09typeof%20elem.getAttribute%20%21%3D%3D%20%22undefined%22%20%26%26%0A%09%09%09%09%09%09%09%09%09elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%0A%09%09%09%09%09%09%09%09%22%22%0A%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22ATTR%22%3A%20function%28%20name%2C%20operator%2C%20check%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20result%20%3D%20Sizzle.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09%09%09if%20%28%20result%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09return%20operator%20%3D%3D%3D%20%22%21%3D%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20%21operator%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09result%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%09/%2A%20eslint-disable%20max-len%20%2A/%0A%0A%09%09%09%09return%20operator%20%3D%3D%3D%20%22%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%21%3D%22%20%3F%20result%20%21%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%5E%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3D%3D%3D%200%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%2A%3D%22%20%3F%20check%20%26%26%20result.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%24%3D%22%20%3F%20check%20%26%26%20result.slice%28%20-check.length%20%29%20%3D%3D%3D%20check%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22~%3D%22%20%3F%20%28%20%22%20%22%20%2B%20result.replace%28%20rwhitespace%2C%20%22%20%22%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20check%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09operator%20%3D%3D%3D%20%22%7C%3D%22%20%3F%20result%20%3D%3D%3D%20check%20%7C%7C%20result.slice%28%200%2C%20check.length%20%2B%201%20%29%20%3D%3D%3D%20check%20%2B%20%22-%22%20%3A%0A%09%09%09%09%09false%3B%0A%09%09%09%09/%2A%20eslint-enable%20max-len%20%2A/%0A%0A%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22CHILD%22%3A%20function%28%20type%2C%20what%2C%20_argument%2C%20first%2C%20last%20%29%20%7B%0A%09%09%09var%20simple%20%3D%20type.slice%28%200%2C%203%20%29%20%21%3D%3D%20%22nth%22%2C%0A%09%09%09%09forward%20%3D%20type.slice%28%20-4%20%29%20%21%3D%3D%20%22last%22%2C%0A%09%09%09%09ofType%20%3D%20what%20%3D%3D%3D%20%22of-type%22%3B%0A%0A%09%09%09return%20first%20%3D%3D%3D%201%20%26%26%20last%20%3D%3D%3D%200%20%3F%0A%0A%09%09%09%09//%20Shortcut%20for%20%3Anth-%2A%28n%29%0A%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09return%20%21%21elem.parentNode%3B%0A%09%09%09%09%7D%20%3A%0A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20cache%2C%20uniqueCache%2C%20outerCache%2C%20node%2C%20nodeIndex%2C%20start%2C%0A%09%09%09%09%09%09dir%20%3D%20simple%20%21%3D%3D%20forward%20%3F%20%22nextSibling%22%20%3A%20%22previousSibling%22%2C%0A%09%09%09%09%09%09parent%20%3D%20elem.parentNode%2C%0A%09%09%09%09%09%09name%20%3D%20ofType%20%26%26%20elem.nodeName.toLowerCase%28%29%2C%0A%09%09%09%09%09%09useCache%20%3D%20%21xml%20%26%26%20%21ofType%2C%0A%09%09%09%09%09%09diff%20%3D%20false%3B%0A%0A%09%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20%3A%28first%7Clast%7Conly%29-%28child%7Cof-type%29%0A%09%09%09%09%09%09if%20%28%20simple%20%29%20%7B%0A%09%09%09%09%09%09%09while%20%28%20dir%20%29%20%7B%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20node%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09if%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09return%20false%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09//%20Reverse%20direction%20for%20%3Aonly-%2A%20%28if%20we%20haven%27t%20yet%20done%20so%29%0A%09%09%09%09%09%09%09%09start%20%3D%20dir%20%3D%20type%20%3D%3D%3D%20%22only%22%20%26%26%20%21start%20%26%26%20%22nextSibling%22%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09start%20%3D%20%5B%20forward%20%3F%20parent.firstChild%20%3A%20parent.lastChild%20%5D%3B%0A%0A%09%09%09%09%09%09//%20non-xml%20%3Anth-child%28...%29%20stores%20cache%20data%20on%20%60parent%60%0A%09%09%09%09%09%09if%20%28%20forward%20%26%26%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Seek%20%60elem%60%20from%20a%20previously-cached%20index%0A%0A%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09node%20%3D%20parent%3B%0A%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%20%26%26%20cache%5B%202%20%5D%3B%0A%09%09%09%09%09%09%09node%20%3D%20nodeIndex%20%26%26%20parent.childNodes%5B%20nodeIndex%20%5D%3B%0A%0A%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%0A%09%09%09%09%09%09%09%09//%20Fallback%20to%20seeking%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20When%20found%2C%20cache%20indexes%20on%20%60parent%60%20and%20break%0A%09%09%09%09%09%09%09%09if%20%28%20node.nodeType%20%3D%3D%3D%201%20%26%26%20%2B%2Bdiff%20%26%26%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20nodeIndex%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Use%20previously-cached%20element%20index%20if%20available%0A%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20...in%20a%20gzip-friendly%20way%0A%09%09%09%09%09%09%09%09node%20%3D%20elem%3B%0A%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%20%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09cache%20%3D%20uniqueCache%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09%09%09%09nodeIndex%20%3D%20cache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20cache%5B%201%20%5D%3B%0A%09%09%09%09%09%09%09%09diff%20%3D%20nodeIndex%3B%0A%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09//%20xml%20%3Anth-child%28...%29%0A%09%09%09%09%09%09%09//%20or%20%3Anth-last-child%28...%29%20or%20%3Anth%28-last%29%3F-of-type%28...%29%0A%09%09%09%09%09%09%09if%20%28%20diff%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Use%20the%20same%20loop%20as%20above%20to%20seek%20%60elem%60%20from%20the%20start%0A%09%09%09%09%09%09%09%09while%20%28%20%28%20node%20%3D%20%2B%2BnodeIndex%20%26%26%20node%20%26%26%20node%5B%20dir%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%28%20diff%20%3D%20nodeIndex%20%3D%200%20%29%20%7C%7C%20start.pop%28%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09if%20%28%20%28%20ofType%20%3F%0A%09%09%09%09%09%09%09%09%09%09node.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name%20%3A%0A%09%09%09%09%09%09%09%09%09%09node.nodeType%20%3D%3D%3D%201%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09%2B%2Bdiff%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Cache%20the%20index%20of%20each%20encountered%20element%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20useCache%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09outerCache%20%3D%20node%5B%20expando%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20node%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20node.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09%09%28%20outerCache%5B%20node.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09uniqueCache%5B%20type%20%5D%20%3D%20%5B%20dirruns%2C%20diff%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20node%20%3D%3D%3D%20elem%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Incorporate%20the%20offset%2C%20then%20check%20against%20cycle%20size%0A%09%09%09%09%09%09diff%20-%3D%20last%3B%0A%09%09%09%09%09%09return%20diff%20%3D%3D%3D%20first%20%7C%7C%20%28%20diff%20%25%20first%20%3D%3D%3D%200%20%26%26%20diff%20/%20first%20%3E%3D%200%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%7D%2C%0A%0A%09%09%22PSEUDO%22%3A%20function%28%20pseudo%2C%20argument%20%29%20%7B%0A%0A%09%09%09//%20pseudo-class%20names%20are%20case-insensitive%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23pseudo-classes%0A%09%09%09//%20Prioritize%20by%20case%20sensitivity%20in%20case%20custom%20pseudos%20are%20added%20with%20uppercase%20letters%0A%09%09%09//%20Remember%20that%20setFilters%20inherits%20from%20pseudos%0A%09%09%09var%20args%2C%0A%09%09%09%09fn%20%3D%20Expr.pseudos%5B%20pseudo%20%5D%20%7C%7C%20Expr.setFilters%5B%20pseudo.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%09Sizzle.error%28%20%22unsupported%20pseudo%3A%20%22%20%2B%20pseudo%20%29%3B%0A%0A%09%09%09//%20The%20user%20may%20use%20createPseudo%20to%20indicate%20that%0A%09%09%09//%20arguments%20are%20needed%20to%20create%20the%20filter%20function%0A%09%09%09//%20just%20as%20Sizzle%20does%0A%09%09%09if%20%28%20fn%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09return%20fn%28%20argument%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20But%20maintain%20support%20for%20old%20signatures%0A%09%09%09if%20%28%20fn.length%20%3E%201%20%29%20%7B%0A%09%09%09%09args%20%3D%20%5B%20pseudo%2C%20pseudo%2C%20%22%22%2C%20argument%20%5D%3B%0A%09%09%09%09return%20Expr.setFilters.hasOwnProperty%28%20pseudo.toLowerCase%28%29%20%29%20%3F%0A%09%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%20%29%20%7B%0A%09%09%09%09%09%09var%20idx%2C%0A%09%09%09%09%09%09%09matched%20%3D%20fn%28%20seed%2C%20argument%20%29%2C%0A%09%09%09%09%09%09%09i%20%3D%20matched.length%3B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09idx%20%3D%20indexOf%28%20seed%2C%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%09seed%5B%20idx%20%5D%20%3D%20%21%28%20matches%5B%20idx%20%5D%20%3D%20matched%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09function%28%20elem%20%29%20%7B%0A%09%09%09%09%09%09return%20fn%28%20elem%2C%200%2C%20args%20%29%3B%0A%09%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20fn%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09pseudos%3A%20%7B%0A%0A%09%09//%20Potentially%20complex%20pseudos%0A%09%09%22not%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%0A%09%09%09//%20Trim%20the%20selector%20passed%20to%20compile%0A%09%09%09//%20to%20avoid%20treating%20leading%20and%20trailing%0A%09%09%09//%20spaces%20as%20combinators%0A%09%09%09var%20input%20%3D%20%5B%5D%2C%0A%09%09%09%09results%20%3D%20%5B%5D%2C%0A%09%09%09%09matcher%20%3D%20compile%28%20selector.replace%28%20rtrim%2C%20%22%241%22%20%29%20%29%3B%0A%0A%09%09%09return%20matcher%5B%20expando%20%5D%20%3F%0A%09%09%09%09markFunction%28%20function%28%20seed%2C%20matches%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09var%20elem%2C%0A%09%09%09%09%09%09unmatched%20%3D%20matcher%28%20seed%2C%20null%2C%20xml%2C%20%5B%5D%20%29%2C%0A%09%09%09%09%09%09i%20%3D%20seed.length%3B%0A%0A%09%09%09%09%09//%20Match%20elements%20unmatched%20by%20%60matcher%60%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09seed%5B%20i%20%5D%20%3D%20%21%28%20matches%5B%20i%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09function%28%20elem%2C%20_context%2C%20xml%20%29%20%7B%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09matcher%28%20input%2C%20null%2C%20xml%2C%20results%20%29%3B%0A%0A%09%09%09%09%09//%20Don%27t%20keep%20the%20element%20%28issue%20%23299%29%0A%09%09%09%09%09input%5B%200%20%5D%20%3D%20null%3B%0A%09%09%09%09%09return%20%21results.pop%28%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22has%22%3A%20markFunction%28%20function%28%20selector%20%29%20%7B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20Sizzle%28%20selector%2C%20elem%20%29.length%20%3E%200%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22contains%22%3A%20markFunction%28%20function%28%20text%20%29%20%7B%0A%09%09%09text%20%3D%20text.replace%28%20runescape%2C%20funescape%20%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.textContent%20%7C%7C%20getText%28%20elem%20%29%20%29.indexOf%28%20text%20%29%20%3E%20-1%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20%22Whether%20an%20element%20is%20represented%20by%20a%20%3Alang%28%29%20selector%0A%09%09//%20is%20based%20solely%20on%20the%20element%27s%20language%20value%0A%09%09//%20being%20equal%20to%20the%20identifier%20C%2C%0A%09%09//%20or%20beginning%20with%20the%20identifier%20C%20immediately%20followed%20by%20%22-%22.%0A%09%09//%20The%20matching%20of%20C%20against%20the%20element%27s%20language%20value%20is%20performed%20case-insensitively.%0A%09%09//%20The%20identifier%20C%20does%20not%20have%20to%20be%20a%20valid%20language%20name.%22%0A%09%09//%20http%3A//www.w3.org/TR/selectors/%23lang-pseudo%0A%09%09%22lang%22%3A%20markFunction%28%20function%28%20lang%20%29%20%7B%0A%0A%09%09%09//%20lang%20value%20must%20be%20a%20valid%20identifier%0A%09%09%09if%20%28%20%21ridentifier.test%28%20lang%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09Sizzle.error%28%20%22unsupported%20lang%3A%20%22%20%2B%20lang%20%29%3B%0A%09%09%09%7D%0A%09%09%09lang%20%3D%20lang.replace%28%20runescape%2C%20funescape%20%29.toLowerCase%28%29%3B%0A%09%09%09return%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20elemLang%3B%0A%09%09%09%09do%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elemLang%20%3D%20documentIsHTML%20%3F%0A%09%09%09%09%09%09elem.lang%20%3A%0A%09%09%09%09%09%09elem.getAttribute%28%20%22xml%3Alang%22%20%29%20%7C%7C%20elem.getAttribute%28%20%22lang%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09elemLang%20%3D%20elemLang.toLowerCase%28%29%3B%0A%09%09%09%09%09%09return%20elemLang%20%3D%3D%3D%20lang%20%7C%7C%20elemLang.indexOf%28%20lang%20%2B%20%22-%22%20%29%20%3D%3D%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20while%20%28%20%28%20elem%20%3D%20elem.parentNode%20%29%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09//%20Miscellaneous%0A%09%09%22target%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20hash%20%3D%20window.location%20%26%26%20window.location.hash%3B%0A%09%09%09return%20hash%20%26%26%20hash.slice%28%201%20%29%20%3D%3D%3D%20elem.id%3B%0A%09%09%7D%2C%0A%0A%09%09%22root%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20docElem%3B%0A%09%09%7D%2C%0A%0A%09%09%22focus%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20document.activeElement%20%26%26%0A%09%09%09%09%28%20%21document.hasFocus%20%7C%7C%20document.hasFocus%28%29%20%29%20%26%26%0A%09%09%09%09%21%21%28%20elem.type%20%7C%7C%20elem.href%20%7C%7C%20~elem.tabIndex%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Boolean%20properties%0A%09%09%22enabled%22%3A%20createDisabledPseudo%28%20false%20%29%2C%0A%09%09%22disabled%22%3A%20createDisabledPseudo%28%20true%20%29%2C%0A%0A%09%09%22checked%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20In%20CSS3%2C%20%3Achecked%20should%20return%20both%20checked%20and%20selected%20elements%0A%09%09%09//%20http%3A//www.w3.org/TR/2011/REC-css3-selectors-20110929/%23checked%0A%09%09%09var%20nodeName%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20%21%21elem.checked%20%29%20%7C%7C%0A%09%09%09%09%28%20nodeName%20%3D%3D%3D%20%22option%22%20%26%26%20%21%21elem.selected%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22selected%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20Accessing%20this%20property%20makes%20selected-by-default%0A%09%09%09//%20options%20in%20Safari%20work%20properly%0A%09%09%09if%20%28%20elem.parentNode%20%29%20%7B%0A%09%09%09%09//%20eslint-disable-next-line%20no-unused-expressions%0A%09%09%09%09elem.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20elem.selected%20%3D%3D%3D%20true%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Contents%0A%09%09%22empty%22%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09//%20http%3A//www.w3.org/TR/selectors/%23empty-pseudo%0A%09%09%09//%20%3Aempty%20is%20negated%20by%20element%20%281%29%20or%20content%20nodes%20%28text%3A%203%3B%20cdata%3A%204%3B%20entity%20ref%3A%205%29%2C%0A%09%09%09//%20%20%20but%20not%20by%20others%20%28comment%3A%208%3B%20processing%20instruction%3A%207%3B%20etc.%29%0A%09%09%09//%20nodeType%20%3C%206%20works%20because%20attributes%20%282%29%20do%20not%20appear%20as%20children%0A%09%09%09for%20%28%20elem%20%3D%20elem.firstChild%3B%20elem%3B%20elem%20%3D%20elem.nextSibling%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3C%206%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09%22parent%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%21Expr.pseudos%5B%20%22empty%22%20%5D%28%20elem%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Element/input%20types%0A%09%09%22header%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rheader.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22input%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20rinputs.test%28%20elem.nodeName%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09%22button%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20name%20%3D%20elem.nodeName.toLowerCase%28%29%3B%0A%09%09%09return%20name%20%3D%3D%3D%20%22input%22%20%26%26%20elem.type%20%3D%3D%3D%20%22button%22%20%7C%7C%20name%20%3D%3D%3D%20%22button%22%3B%0A%09%09%7D%2C%0A%0A%09%09%22text%22%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20attr%3B%0A%09%09%09return%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%26%26%0A%09%09%09%09elem.type%20%3D%3D%3D%20%22text%22%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20IE%3C8%0A%09%09%09%09//%20New%20HTML5%20attribute%20values%20%28e.g.%2C%20%22search%22%29%20appear%20with%20elem.type%20%3D%3D%3D%20%22text%22%0A%09%09%09%09%28%20%28%20attr%20%3D%20elem.getAttribute%28%20%22type%22%20%29%20%29%20%3D%3D%20null%20%7C%7C%0A%09%09%09%09%09attr.toLowerCase%28%29%20%3D%3D%3D%20%22text%22%20%29%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Position-in-collection%0A%09%09%22first%22%3A%20createPositionalPseudo%28%20function%28%29%20%7B%0A%09%09%09return%20%5B%200%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22last%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09return%20%5B%20length%20-%201%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22eq%22%3A%20createPositionalPseudo%28%20function%28%20_matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09return%20%5B%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%20%5D%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22even%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22odd%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%20%29%20%7B%0A%09%09%09var%20i%20%3D%201%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20length%3B%20i%20%2B%3D%202%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22lt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%0A%09%09%09%09argument%20%2B%20length%20%3A%0A%09%09%09%09argument%20%3E%20length%20%3F%0A%09%09%09%09%09length%20%3A%0A%09%09%09%09%09argument%3B%0A%09%09%09for%20%28%20%3B%20--i%20%3E%3D%200%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%2C%0A%0A%09%09%22gt%22%3A%20createPositionalPseudo%28%20function%28%20matchIndexes%2C%20length%2C%20argument%20%29%20%7B%0A%09%09%09var%20i%20%3D%20argument%20%3C%200%20%3F%20argument%20%2B%20length%20%3A%20argument%3B%0A%09%09%09for%20%28%20%3B%20%2B%2Bi%20%3C%20length%3B%20%29%20%7B%0A%09%09%09%09matchIndexes.push%28%20i%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20matchIndexes%3B%0A%09%09%7D%20%29%0A%09%7D%0A%7D%3B%0A%0AExpr.pseudos%5B%20%22nth%22%20%5D%20%3D%20Expr.pseudos%5B%20%22eq%22%20%5D%3B%0A%0A//%20Add%20button/input%20type%20pseudos%0Afor%20%28%20i%20in%20%7B%20radio%3A%20true%2C%20checkbox%3A%20true%2C%20file%3A%20true%2C%20password%3A%20true%2C%20image%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createInputPseudo%28%20i%20%29%3B%0A%7D%0Afor%20%28%20i%20in%20%7B%20submit%3A%20true%2C%20reset%3A%20true%20%7D%20%29%20%7B%0A%09Expr.pseudos%5B%20i%20%5D%20%3D%20createButtonPseudo%28%20i%20%29%3B%0A%7D%0A%0A//%20Easy%20API%20for%20creating%20new%20setFilters%0Afunction%20setFilters%28%29%20%7B%7D%0AsetFilters.prototype%20%3D%20Expr.filters%20%3D%20Expr.pseudos%3B%0AExpr.setFilters%20%3D%20new%20setFilters%28%29%3B%0A%0Atokenize%20%3D%20Sizzle.tokenize%20%3D%20function%28%20selector%2C%20parseOnly%20%29%20%7B%0A%09var%20matched%2C%20match%2C%20tokens%2C%20type%2C%0A%09%09soFar%2C%20groups%2C%20preFilters%2C%0A%09%09cached%20%3D%20tokenCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20cached%20%29%20%7B%0A%09%09return%20parseOnly%20%3F%200%20%3A%20cached.slice%28%200%20%29%3B%0A%09%7D%0A%0A%09soFar%20%3D%20selector%3B%0A%09groups%20%3D%20%5B%5D%3B%0A%09preFilters%20%3D%20Expr.preFilter%3B%0A%0A%09while%20%28%20soFar%20%29%20%7B%0A%0A%09%09//%20Comma%20and%20first%20run%0A%09%09if%20%28%20%21matched%20%7C%7C%20%28%20match%20%3D%20rcomma.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09if%20%28%20match%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20consume%20trailing%20commas%20as%20valid%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20match%5B%200%20%5D.length%20%29%20%7C%7C%20soFar%3B%0A%09%09%09%7D%0A%09%09%09groups.push%28%20%28%20tokens%20%3D%20%5B%5D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09matched%20%3D%20false%3B%0A%0A%09%09//%20Combinators%0A%09%09if%20%28%20%28%20match%20%3D%20rcombinators.exec%28%20soFar%20%29%20%29%20%29%20%7B%0A%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09tokens.push%28%20%7B%0A%09%09%09%09value%3A%20matched%2C%0A%0A%09%09%09%09//%20Cast%20descendant%20combinators%20to%20space%0A%09%09%09%09type%3A%20match%5B%200%20%5D.replace%28%20rtrim%2C%20%22%20%22%20%29%0A%09%09%09%7D%20%29%3B%0A%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Filters%0A%09%09for%20%28%20type%20in%20Expr.filter%20%29%20%7B%0A%09%09%09if%20%28%20%28%20match%20%3D%20matchExpr%5B%20type%20%5D.exec%28%20soFar%20%29%20%29%20%26%26%20%28%20%21preFilters%5B%20type%20%5D%20%7C%7C%0A%09%09%09%09%28%20match%20%3D%20preFilters%5B%20type%20%5D%28%20match%20%29%20%29%20%29%20%29%20%7B%0A%09%09%09%09matched%20%3D%20match.shift%28%29%3B%0A%09%09%09%09tokens.push%28%20%7B%0A%09%09%09%09%09value%3A%20matched%2C%0A%09%09%09%09%09type%3A%20type%2C%0A%09%09%09%09%09matches%3A%20match%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09soFar%20%3D%20soFar.slice%28%20matched.length%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20%21matched%20%29%20%7B%0A%09%09%09break%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20length%20of%20the%20invalid%20excess%0A%09//%20if%20we%27re%20just%20parsing%0A%09//%20Otherwise%2C%20throw%20an%20error%20or%20return%20tokens%0A%09return%20parseOnly%20%3F%0A%09%09soFar.length%20%3A%0A%09%09soFar%20%3F%0A%09%09%09Sizzle.error%28%20selector%20%29%20%3A%0A%0A%09%09%09//%20Cache%20the%20tokens%0A%09%09%09tokenCache%28%20selector%2C%20groups%20%29.slice%28%200%20%29%3B%0A%7D%3B%0A%0Afunction%20toSelector%28%20tokens%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09selector%20%3D%20%22%22%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09selector%20%2B%3D%20tokens%5B%20i%20%5D.value%3B%0A%09%7D%0A%09return%20selector%3B%0A%7D%0A%0Afunction%20addCombinator%28%20matcher%2C%20combinator%2C%20base%20%29%20%7B%0A%09var%20dir%20%3D%20combinator.dir%2C%0A%09%09skip%20%3D%20combinator.next%2C%0A%09%09key%20%3D%20skip%20%7C%7C%20dir%2C%0A%09%09checkNonElements%20%3D%20base%20%26%26%20key%20%3D%3D%3D%20%22parentNode%22%2C%0A%09%09doneName%20%3D%20done%2B%2B%3B%0A%0A%09return%20combinator.first%20%3F%0A%0A%09%09//%20Check%20against%20closest%20ancestor/preceding%20element%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09return%20matcher%28%20elem%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%20%3A%0A%0A%09%09//%20Check%20against%20all%20ancestor/preceding%20elements%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20oldCache%2C%20uniqueCache%2C%20outerCache%2C%0A%09%09%09%09newCache%20%3D%20%5B%20dirruns%2C%20doneName%20%5D%3B%0A%0A%09%09%09//%20We%20can%27t%20set%20arbitrary%20data%20on%20XML%20nodes%2C%20so%20they%20don%27t%20benefit%20from%20combinator%20caching%0A%09%09%09if%20%28%20xml%20%29%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20checkNonElements%20%29%20%7B%0A%09%09%09%09%09%09outerCache%20%3D%20elem%5B%20expando%20%5D%20%7C%7C%20%28%20elem%5B%20expando%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C9%20only%0A%09%09%09%09%09%09//%20Defend%20against%20cloned%20attroperties%20%28jQuery%20gh-1709%29%0A%09%09%09%09%09%09uniqueCache%20%3D%20outerCache%5B%20elem.uniqueID%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%28%20outerCache%5B%20elem.uniqueID%20%5D%20%3D%20%7B%7D%20%29%3B%0A%0A%09%09%09%09%09%09if%20%28%20skip%20%26%26%20skip%20%3D%3D%3D%20elem.nodeName.toLowerCase%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09elem%20%3D%20elem%5B%20dir%20%5D%20%7C%7C%20elem%3B%0A%09%09%09%09%09%09%7D%20else%20if%20%28%20%28%20oldCache%20%3D%20uniqueCache%5B%20key%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%09oldCache%5B%200%20%5D%20%3D%3D%3D%20dirruns%20%26%26%20oldCache%5B%201%20%5D%20%3D%3D%3D%20doneName%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Assign%20to%20newCache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09return%20%28%20newCache%5B%202%20%5D%20%3D%20oldCache%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Reuse%20newcache%20so%20results%20back-propagate%20to%20previous%20elements%0A%09%09%09%09%09%09%09uniqueCache%5B%20key%20%5D%20%3D%20newCache%3B%0A%0A%09%09%09%09%09%09%09//%20A%20match%20means%20we%27re%20done%3B%20a%20fail%20means%20we%20have%20to%20keep%20checking%0A%09%09%09%09%09%09%09if%20%28%20%28%20newCache%5B%202%20%5D%20%3D%20matcher%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%3B%0A%7D%0A%0Afunction%20elementMatcher%28%20matchers%20%29%20%7B%0A%09return%20matchers.length%20%3E%201%20%3F%0A%09%09function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20i%20%3D%20matchers.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%21matchers%5B%20i%20%5D%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%20%3A%0A%09%09matchers%5B%200%20%5D%3B%0A%7D%0A%0Afunction%20multipleContexts%28%20selector%2C%20contexts%2C%20results%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20contexts.length%3B%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09Sizzle%28%20selector%2C%20contexts%5B%20i%20%5D%2C%20results%20%29%3B%0A%09%7D%0A%09return%20results%3B%0A%7D%0A%0Afunction%20condense%28%20unmatched%2C%20map%2C%20filter%2C%20context%2C%20xml%20%29%20%7B%0A%09var%20elem%2C%0A%09%09newUnmatched%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09len%20%3D%20unmatched.length%2C%0A%09%09mapped%20%3D%20map%20%21%3D%20null%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20elem%20%3D%20unmatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20%21filter%20%7C%7C%20filter%28%20elem%2C%20context%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09newUnmatched.push%28%20elem%20%29%3B%0A%09%09%09%09if%20%28%20mapped%20%29%20%7B%0A%09%09%09%09%09map.push%28%20i%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20newUnmatched%3B%0A%7D%0A%0Afunction%20setMatcher%28%20preFilter%2C%20selector%2C%20matcher%2C%20postFilter%2C%20postFinder%2C%20postSelector%20%29%20%7B%0A%09if%20%28%20postFilter%20%26%26%20%21postFilter%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFilter%20%3D%20setMatcher%28%20postFilter%20%29%3B%0A%09%7D%0A%09if%20%28%20postFinder%20%26%26%20%21postFinder%5B%20expando%20%5D%20%29%20%7B%0A%09%09postFinder%20%3D%20setMatcher%28%20postFinder%2C%20postSelector%20%29%3B%0A%09%7D%0A%09return%20markFunction%28%20function%28%20seed%2C%20results%2C%20context%2C%20xml%20%29%20%7B%0A%09%09var%20temp%2C%20i%2C%20elem%2C%0A%09%09%09preMap%20%3D%20%5B%5D%2C%0A%09%09%09postMap%20%3D%20%5B%5D%2C%0A%09%09%09preexisting%20%3D%20results.length%2C%0A%0A%09%09%09//%20Get%20initial%20elements%20from%20seed%20or%20context%0A%09%09%09elems%20%3D%20seed%20%7C%7C%20multipleContexts%28%0A%09%09%09%09selector%20%7C%7C%20%22%2A%22%2C%0A%09%09%09%09context.nodeType%20%3F%20%5B%20context%20%5D%20%3A%20context%2C%0A%09%09%09%09%5B%5D%0A%09%09%09%29%2C%0A%0A%09%09%09//%20Prefilter%20to%20get%20matcher%20input%2C%20preserving%20a%20map%20for%20seed-results%20synchronization%0A%09%09%09matcherIn%20%3D%20preFilter%20%26%26%20%28%20seed%20%7C%7C%20%21selector%20%29%20%3F%0A%09%09%09%09condense%28%20elems%2C%20preMap%2C%20preFilter%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09elems%2C%0A%0A%09%09%09matcherOut%20%3D%20matcher%20%3F%0A%0A%09%09%09%09//%20If%20we%20have%20a%20postFinder%2C%20or%20filtered%20seed%2C%20or%20non-seed%20postFilter%20or%20preexisting%20results%2C%0A%09%09%09%09postFinder%20%7C%7C%20%28%20seed%20%3F%20preFilter%20%3A%20preexisting%20%7C%7C%20postFilter%20%29%20%3F%0A%0A%09%09%09%09%09//%20...intermediate%20processing%20is%20necessary%0A%09%09%09%09%09%5B%5D%20%3A%0A%0A%09%09%09%09%09//%20...otherwise%20use%20results%20directly%0A%09%09%09%09%09results%20%3A%0A%09%09%09%09matcherIn%3B%0A%0A%09%09//%20Find%20primary%20matches%0A%09%09if%20%28%20matcher%20%29%20%7B%0A%09%09%09matcher%28%20matcherIn%2C%20matcherOut%2C%20context%2C%20xml%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20postFilter%0A%09%09if%20%28%20postFilter%20%29%20%7B%0A%09%09%09temp%20%3D%20condense%28%20matcherOut%2C%20postMap%20%29%3B%0A%09%09%09postFilter%28%20temp%2C%20%5B%5D%2C%20context%2C%20xml%20%29%3B%0A%0A%09%09%09//%20Un-match%20failing%20elements%20by%20moving%20them%20back%20to%20matcherIn%0A%09%09%09i%20%3D%20temp.length%3B%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20elem%20%3D%20temp%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcherOut%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20%21%28%20matcherIn%5B%20postMap%5B%20i%20%5D%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09if%20%28%20postFinder%20%7C%7C%20preFilter%20%29%20%7B%0A%09%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%0A%09%09%09%09%09//%20Get%20the%20final%20matcherOut%20by%20condensing%20this%20intermediate%20into%20postFinder%20contexts%0A%09%09%09%09%09temp%20%3D%20%5B%5D%3B%0A%09%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Restore%20matcherIn%20since%20elem%20is%20not%20yet%20a%20final%20match%0A%09%09%09%09%09%09%09temp.push%28%20%28%20matcherIn%5B%20i%20%5D%20%3D%20elem%20%29%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09postFinder%28%20null%2C%20%28%20matcherOut%20%3D%20%5B%5D%20%29%2C%20temp%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Move%20matched%20elements%20from%20seed%20to%20results%20to%20keep%20them%20synchronized%0A%09%09%09%09i%20%3D%20matcherOut.length%3B%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20matcherOut%5B%20i%20%5D%20%29%20%26%26%0A%09%09%09%09%09%09%28%20temp%20%3D%20postFinder%20%3F%20indexOf%28%20seed%2C%20elem%20%29%20%3A%20preMap%5B%20i%20%5D%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09%09%09%09seed%5B%20temp%20%5D%20%3D%20%21%28%20results%5B%20temp%20%5D%20%3D%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Add%20elements%20to%20results%2C%20through%20postFinder%20if%20defined%0A%09%09%7D%20else%20%7B%0A%09%09%09matcherOut%20%3D%20condense%28%0A%09%09%09%09matcherOut%20%3D%3D%3D%20results%20%3F%0A%09%09%09%09%09matcherOut.splice%28%20preexisting%2C%20matcherOut.length%20%29%20%3A%0A%09%09%09%09%09matcherOut%0A%09%09%09%29%3B%0A%09%09%09if%20%28%20postFinder%20%29%20%7B%0A%09%09%09%09postFinder%28%20null%2C%20results%2C%20matcherOut%2C%20xml%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09push.apply%28%20results%2C%20matcherOut%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Afunction%20matcherFromTokens%28%20tokens%20%29%20%7B%0A%09var%20checkContext%2C%20matcher%2C%20j%2C%0A%09%09len%20%3D%20tokens.length%2C%0A%09%09leadingRelative%20%3D%20Expr.relative%5B%20tokens%5B%200%20%5D.type%20%5D%2C%0A%09%09implicitRelative%20%3D%20leadingRelative%20%7C%7C%20Expr.relative%5B%20%22%20%22%20%5D%2C%0A%09%09i%20%3D%20leadingRelative%20%3F%201%20%3A%200%2C%0A%0A%09%09//%20The%20foundational%20matcher%20ensures%20that%20elements%20are%20reachable%20from%20top-level%20context%28s%29%0A%09%09matchContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem%20%3D%3D%3D%20checkContext%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchAnyContext%20%3D%20addCombinator%28%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20indexOf%28%20checkContext%2C%20elem%20%29%20%3E%20-1%3B%0A%09%09%7D%2C%20implicitRelative%2C%20true%20%29%2C%0A%09%09matchers%20%3D%20%5B%20function%28%20elem%2C%20context%2C%20xml%20%29%20%7B%0A%09%09%09var%20ret%20%3D%20%28%20%21leadingRelative%20%26%26%20%28%20xml%20%7C%7C%20context%20%21%3D%3D%20outermostContext%20%29%20%29%20%7C%7C%20%28%0A%09%09%09%09%28%20checkContext%20%3D%20context%20%29.nodeType%20%3F%0A%09%09%09%09%09matchContext%28%20elem%2C%20context%2C%20xml%20%29%20%3A%0A%09%09%09%09%09matchAnyContext%28%20elem%2C%20context%2C%20xml%20%29%20%29%3B%0A%0A%09%09%09//%20Avoid%20hanging%20onto%20element%20%28issue%20%23299%29%0A%09%09%09checkContext%20%3D%20null%3B%0A%09%09%09return%20ret%3B%0A%09%09%7D%20%5D%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20matcher%20%3D%20Expr.relative%5B%20tokens%5B%20i%20%5D.type%20%5D%20%29%20%29%20%7B%0A%09%09%09matchers%20%3D%20%5B%20addCombinator%28%20elementMatcher%28%20matchers%20%29%2C%20matcher%20%29%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09matcher%20%3D%20Expr.filter%5B%20tokens%5B%20i%20%5D.type%20%5D.apply%28%20null%2C%20tokens%5B%20i%20%5D.matches%20%29%3B%0A%0A%09%09%09//%20Return%20special%20upon%20seeing%20a%20positional%20matcher%0A%09%09%09if%20%28%20matcher%5B%20expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Find%20the%20next%20relative%20operator%20%28if%20any%29%20for%20proper%20handling%0A%09%09%09%09j%20%3D%20%2B%2Bi%3B%0A%09%09%09%09for%20%28%20%3B%20j%20%3C%20len%3B%20j%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20Expr.relative%5B%20tokens%5B%20j%20%5D.type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20setMatcher%28%0A%09%09%09%09%09i%20%3E%201%20%26%26%20elementMatcher%28%20matchers%20%29%2C%0A%09%09%09%09%09i%20%3E%201%20%26%26%20toSelector%28%0A%0A%09%09%09%09%09//%20If%20the%20preceding%20token%20was%20a%20descendant%20combinator%2C%20insert%20an%20implicit%20any-element%20%60%2A%60%0A%09%09%09%09%09tokens%0A%09%09%09%09%09%09.slice%28%200%2C%20i%20-%201%20%29%0A%09%09%09%09%09%09.concat%28%20%7B%20value%3A%20tokens%5B%20i%20-%202%20%5D.type%20%3D%3D%3D%20%22%20%22%20%3F%20%22%2A%22%20%3A%20%22%22%20%7D%20%29%0A%09%09%09%09%09%29.replace%28%20rtrim%2C%20%22%241%22%20%29%2C%0A%09%09%09%09%09matcher%2C%0A%09%09%09%09%09i%20%3C%20j%20%26%26%20matcherFromTokens%28%20tokens.slice%28%20i%2C%20j%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20matcherFromTokens%28%20%28%20tokens%20%3D%20tokens.slice%28%20j%20%29%20%29%20%29%2C%0A%09%09%09%09%09j%20%3C%20len%20%26%26%20toSelector%28%20tokens%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%09matchers.push%28%20matcher%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elementMatcher%28%20matchers%20%29%3B%0A%7D%0A%0Afunction%20matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%20%7B%0A%09var%20bySet%20%3D%20setMatchers.length%20%3E%200%2C%0A%09%09byElement%20%3D%20elementMatchers.length%20%3E%200%2C%0A%09%09superMatcher%20%3D%20function%28%20seed%2C%20context%2C%20xml%2C%20results%2C%20outermost%20%29%20%7B%0A%09%09%09var%20elem%2C%20j%2C%20matcher%2C%0A%09%09%09%09matchedCount%20%3D%200%2C%0A%09%09%09%09i%20%3D%20%220%22%2C%0A%09%09%09%09unmatched%20%3D%20seed%20%26%26%20%5B%5D%2C%0A%09%09%09%09setMatched%20%3D%20%5B%5D%2C%0A%09%09%09%09contextBackup%20%3D%20outermostContext%2C%0A%0A%09%09%09%09//%20We%20must%20always%20have%20either%20seed%20elements%20or%20outermost%20context%0A%09%09%09%09elems%20%3D%20seed%20%7C%7C%20byElement%20%26%26%20Expr.find%5B%20%22TAG%22%20%5D%28%20%22%2A%22%2C%20outermost%20%29%2C%0A%0A%09%09%09%09//%20Use%20integer%20dirruns%20iff%20this%20is%20the%20outermost%20matcher%0A%09%09%09%09dirrunsUnique%20%3D%20%28%20dirruns%20%2B%3D%20contextBackup%20%3D%3D%20null%20%3F%201%20%3A%20Math.random%28%29%20%7C%7C%200.1%20%29%2C%0A%09%09%09%09len%20%3D%20elems.length%3B%0A%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09outermostContext%20%3D%20context%20%3D%3D%20document%20%7C%7C%20context%20%7C%7C%20outermost%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20elements%20passing%20elementMatchers%20directly%20to%20results%0A%09%09%09//%20Support%3A%20IE%3C9%2C%20Safari%0A%09%09%09//%20Tolerate%20NodeList%20properties%20%28IE%3A%20%22length%22%3B%20Safari%3A%20%3Cnumber%3E%29%20matching%20elements%20by%20id%0A%09%09%09for%20%28%20%3B%20i%20%21%3D%3D%20len%20%26%26%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20byElement%20%26%26%20elem%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%2011%2B%2C%20Edge%2017%20-%2018%2B%0A%09%09%09%09%09//%20IE/Edge%20sometimes%20throw%20a%20%22Permission%20denied%22%20error%20when%20strict-comparing%0A%09%09%09%09%09//%20two%20documents%3B%20shallow%20comparisons%20work.%0A%09%09%09%09%09//%20eslint-disable-next-line%20eqeqeq%0A%09%09%09%09%09if%20%28%20%21context%20%26%26%20elem.ownerDocument%20%21%3D%20document%20%29%20%7B%0A%09%09%09%09%09%09setDocument%28%20elem%20%29%3B%0A%09%09%09%09%09%09xml%20%3D%20%21documentIsHTML%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09while%20%28%20%28%20matcher%20%3D%20elementMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20matcher%28%20elem%2C%20context%20%7C%7C%20document%2C%20xml%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09results.push%28%20elem%20%29%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Track%20unmatched%20elements%20for%20set%20filters%0A%09%09%09%09if%20%28%20bySet%20%29%20%7B%0A%0A%09%09%09%09%09//%20They%20will%20have%20gone%20through%20all%20possible%20matchers%0A%09%09%09%09%09if%20%28%20%28%20elem%20%3D%20%21matcher%20%26%26%20elem%20%29%20%29%20%7B%0A%09%09%09%09%09%09matchedCount--%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Lengthen%20the%20array%20for%20every%20element%2C%20matched%20or%20not%0A%09%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%09%09%09%09%09%09unmatched.push%28%20elem%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20%60i%60%20is%20now%20the%20count%20of%20elements%20visited%20above%2C%20and%20adding%20it%20to%20%60matchedCount%60%0A%09%09%09//%20makes%20the%20latter%20nonnegative.%0A%09%09%09matchedCount%20%2B%3D%20i%3B%0A%0A%09%09%09//%20Apply%20set%20filters%20to%20unmatched%20elements%0A%09%09%09//%20NOTE%3A%20This%20can%20be%20skipped%20if%20there%20are%20no%20unmatched%20elements%20%28i.e.%2C%20%60matchedCount%60%0A%09%09%09//%20equals%20%60i%60%29%2C%20unless%20we%20didn%27t%20visit%20_any_%20elements%20in%20the%20above%20loop%20because%20we%20have%0A%09%09%09//%20no%20element%20matchers%20and%20no%20seed.%0A%09%09%09//%20Incrementing%20an%20initially-string%20%220%22%20%60i%60%20allows%20%60i%60%20to%20remain%20a%20string%20only%20in%20that%0A%09%09%09//%20case%2C%20which%20will%20result%20in%20a%20%2200%22%20%60matchedCount%60%20that%20differs%20from%20%60i%60%20but%20is%20also%0A%09%09%09//%20numerically%20zero.%0A%09%09%09if%20%28%20bySet%20%26%26%20i%20%21%3D%3D%20matchedCount%20%29%20%7B%0A%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09while%20%28%20%28%20matcher%20%3D%20setMatchers%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09matcher%28%20unmatched%2C%20setMatched%2C%20context%2C%20xml%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%20seed%20%29%20%7B%0A%0A%09%09%09%09%09//%20Reintegrate%20element%20matches%20to%20eliminate%20the%20need%20for%20sorting%0A%09%09%09%09%09if%20%28%20matchedCount%20%3E%200%20%29%20%7B%0A%09%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20%21%28%20unmatched%5B%20i%20%5D%20%7C%7C%20setMatched%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09setMatched%5B%20i%20%5D%20%3D%20pop.call%28%20results%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Discard%20index%20placeholder%20values%20to%20get%20only%20actual%20matches%0A%09%09%09%09%09setMatched%20%3D%20condense%28%20setMatched%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Add%20matches%20to%20results%0A%09%09%09%09push.apply%28%20results%2C%20setMatched%20%29%3B%0A%0A%09%09%09%09//%20Seedless%20set%20matches%20succeeding%20multiple%20successful%20matchers%20stipulate%20sorting%0A%09%09%09%09if%20%28%20outermost%20%26%26%20%21seed%20%26%26%20setMatched.length%20%3E%200%20%26%26%0A%09%09%09%09%09%28%20matchedCount%20%2B%20setMatchers.length%20%29%20%3E%201%20%29%20%7B%0A%0A%09%09%09%09%09Sizzle.uniqueSort%28%20results%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Override%20manipulation%20of%20globals%20by%20nested%20matchers%0A%09%09%09if%20%28%20outermost%20%29%20%7B%0A%09%09%09%09dirruns%20%3D%20dirrunsUnique%3B%0A%09%09%09%09outermostContext%20%3D%20contextBackup%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20unmatched%3B%0A%09%09%7D%3B%0A%0A%09return%20bySet%20%3F%0A%09%09markFunction%28%20superMatcher%20%29%20%3A%0A%09%09superMatcher%3B%0A%7D%0A%0Acompile%20%3D%20Sizzle.compile%20%3D%20function%28%20selector%2C%20match%20/%2A%20Internal%20Use%20Only%20%2A/%20%29%20%7B%0A%09var%20i%2C%0A%09%09setMatchers%20%3D%20%5B%5D%2C%0A%09%09elementMatchers%20%3D%20%5B%5D%2C%0A%09%09cached%20%3D%20compilerCache%5B%20selector%20%2B%20%22%20%22%20%5D%3B%0A%0A%09if%20%28%20%21cached%20%29%20%7B%0A%0A%09%09//%20Generate%20a%20function%20of%20recursive%20functions%20that%20can%20be%20used%20to%20check%20each%20element%0A%09%09if%20%28%20%21match%20%29%20%7B%0A%09%09%09match%20%3D%20tokenize%28%20selector%20%29%3B%0A%09%09%7D%0A%09%09i%20%3D%20match.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09cached%20%3D%20matcherFromTokens%28%20match%5B%20i%20%5D%20%29%3B%0A%09%09%09if%20%28%20cached%5B%20expando%20%5D%20%29%20%7B%0A%09%09%09%09setMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elementMatchers.push%28%20cached%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Cache%20the%20compiled%20function%0A%09%09cached%20%3D%20compilerCache%28%0A%09%09%09selector%2C%0A%09%09%09matcherFromGroupMatchers%28%20elementMatchers%2C%20setMatchers%20%29%0A%09%09%29%3B%0A%0A%09%09//%20Save%20selector%20and%20tokenization%0A%09%09cached.selector%20%3D%20selector%3B%0A%09%7D%0A%09return%20cached%3B%0A%7D%3B%0A%0A/%2A%2A%0A%20%2A%20A%20low-level%20selection%20function%20that%20works%20with%20Sizzle%27s%20compiled%0A%20%2A%20%20selector%20functions%0A%20%2A%20%40param%20%7BString%7CFunction%7D%20selector%20A%20selector%20or%20a%20pre-compiled%0A%20%2A%20%20selector%20function%20built%20with%20Sizzle.compile%0A%20%2A%20%40param%20%7BElement%7D%20context%0A%20%2A%20%40param%20%7BArray%7D%20%5Bresults%5D%0A%20%2A%20%40param%20%7BArray%7D%20%5Bseed%5D%20A%20set%20of%20elements%20to%20match%20against%0A%20%2A/%0Aselect%20%3D%20Sizzle.select%20%3D%20function%28%20selector%2C%20context%2C%20results%2C%20seed%20%29%20%7B%0A%09var%20i%2C%20tokens%2C%20token%2C%20type%2C%20find%2C%0A%09%09compiled%20%3D%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%26%26%20selector%2C%0A%09%09match%20%3D%20%21seed%20%26%26%20tokenize%28%20%28%20selector%20%3D%20compiled.selector%20%7C%7C%20selector%20%29%20%29%3B%0A%0A%09results%20%3D%20results%20%7C%7C%20%5B%5D%3B%0A%0A%09//%20Try%20to%20minimize%20operations%20if%20there%20is%20only%20one%20selector%20in%20the%20list%20and%20no%20seed%0A%09//%20%28the%20latter%20of%20which%20guarantees%20us%20context%29%0A%09if%20%28%20match.length%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Reduce%20context%20if%20the%20leading%20compound%20selector%20is%20an%20ID%0A%09%09tokens%20%3D%20match%5B%200%20%5D%20%3D%20match%5B%200%20%5D.slice%28%200%20%29%3B%0A%09%09if%20%28%20tokens.length%20%3E%202%20%26%26%20%28%20token%20%3D%20tokens%5B%200%20%5D%20%29.type%20%3D%3D%3D%20%22ID%22%20%26%26%0A%09%09%09context.nodeType%20%3D%3D%3D%209%20%26%26%20documentIsHTML%20%26%26%20Expr.relative%5B%20tokens%5B%201%20%5D.type%20%5D%20%29%20%7B%0A%0A%09%09%09context%20%3D%20%28%20Expr.find%5B%20%22ID%22%20%5D%28%20token.matches%5B%200%20%5D%0A%09%09%09%09.replace%28%20runescape%2C%20funescape%20%29%2C%20context%20%29%20%7C%7C%20%5B%5D%20%29%5B%200%20%5D%3B%0A%09%09%09if%20%28%20%21context%20%29%20%7B%0A%09%09%09%09return%20results%3B%0A%0A%09%09%09//%20Precompiled%20matchers%20will%20still%20verify%20ancestry%2C%20so%20step%20up%20a%20level%0A%09%09%09%7D%20else%20if%20%28%20compiled%20%29%20%7B%0A%09%09%09%09context%20%3D%20context.parentNode%3B%0A%09%09%09%7D%0A%0A%09%09%09selector%20%3D%20selector.slice%28%20tokens.shift%28%29.value.length%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Fetch%20a%20seed%20set%20for%20right-to-left%20matching%0A%09%09i%20%3D%20matchExpr%5B%20%22needsContext%22%20%5D.test%28%20selector%20%29%20%3F%200%20%3A%20tokens.length%3B%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09token%20%3D%20tokens%5B%20i%20%5D%3B%0A%0A%09%09%09//%20Abort%20if%20we%20hit%20a%20combinator%0A%09%09%09if%20%28%20Expr.relative%5B%20%28%20type%20%3D%20token.type%20%29%20%5D%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%28%20find%20%3D%20Expr.find%5B%20type%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Search%2C%20expanding%20context%20for%20leading%20sibling%20combinators%0A%09%09%09%09if%20%28%20%28%20seed%20%3D%20find%28%0A%09%09%09%09%09token.matches%5B%200%20%5D.replace%28%20runescape%2C%20funescape%20%29%2C%0A%09%09%09%09%09rsibling.test%28%20tokens%5B%200%20%5D.type%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%0A%09%09%09%09%09%09context%0A%09%09%09%09%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20seed%20is%20empty%20or%20no%20tokens%20remain%2C%20we%20can%20return%20early%0A%09%09%09%09%09tokens.splice%28%20i%2C%201%20%29%3B%0A%09%09%09%09%09selector%20%3D%20seed.length%20%26%26%20toSelector%28%20tokens%20%29%3B%0A%09%09%09%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09%09%09%09push.apply%28%20results%2C%20seed%20%29%3B%0A%09%09%09%09%09%09return%20results%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Compile%20and%20execute%20a%20filtering%20function%20if%20one%20is%20not%20provided%0A%09//%20Provide%20%60match%60%20to%20avoid%20retokenization%20if%20we%20modified%20the%20selector%20above%0A%09%28%20compiled%20%7C%7C%20compile%28%20selector%2C%20match%20%29%20%29%28%0A%09%09seed%2C%0A%09%09context%2C%0A%09%09%21documentIsHTML%2C%0A%09%09results%2C%0A%09%09%21context%20%7C%7C%20rsibling.test%28%20selector%20%29%20%26%26%20testContext%28%20context.parentNode%20%29%20%7C%7C%20context%0A%09%29%3B%0A%09return%20results%3B%0A%7D%3B%0A%0A//%20One-time%20assignments%0A%0A//%20Sort%20stability%0Asupport.sortStable%20%3D%20expando.split%28%20%22%22%20%29.sort%28%20sortOrder%20%29.join%28%20%22%22%20%29%20%3D%3D%3D%20expando%3B%0A%0A//%20Support%3A%20Chrome%2014-35%2B%0A//%20Always%20assume%20duplicates%20if%20they%20aren%27t%20passed%20to%20the%20comparison%20function%0Asupport.detectDuplicates%20%3D%20%21%21hasDuplicate%3B%0A%0A//%20Initialize%20against%20the%20default%20document%0AsetDocument%28%29%3B%0A%0A//%20Support%3A%20Webkit%3C537.32%20-%20Safari%206.0.3/Chrome%2025%20%28fixed%20in%20Chrome%2027%29%0A//%20Detached%20nodes%20confoundingly%20follow%20%2Aeach%20other%2A%0Asupport.sortDetached%20%3D%20assert%28%20function%28%20el%20%29%20%7B%0A%0A%09//%20Should%20return%201%2C%20but%20returns%204%20%28following%29%0A%09return%20el.compareDocumentPosition%28%20document.createElement%28%20%22fieldset%22%20%29%20%29%20%26%201%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%3C8%0A//%20Prevent%20attribute/property%20%22interpolation%22%0A//%20https%3A//msdn.microsoft.com/en-us/library/ms536429%2528VS.85%2529.aspx%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Ca%20href%3D%27%23%27%3E%3C/a%3E%22%3B%0A%09return%20el.firstChild.getAttribute%28%20%22href%22%20%29%20%3D%3D%3D%20%22%23%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22type%7Chref%7Cheight%7Cwidth%22%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20name%2C%20name.toLowerCase%28%29%20%3D%3D%3D%20%22type%22%20%3F%201%20%3A%202%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20defaultValue%20in%20place%20of%20getAttribute%28%22value%22%29%0Aif%20%28%20%21support.attributes%20%7C%7C%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09el.innerHTML%20%3D%20%22%3Cinput/%3E%22%3B%0A%09el.firstChild.setAttribute%28%20%22value%22%2C%20%22%22%20%29%3B%0A%09return%20el.firstChild.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20%22%22%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20%22value%22%2C%20function%28%20elem%2C%20_name%2C%20isXML%20%29%20%7B%0A%09%09if%20%28%20%21isXML%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20%22input%22%20%29%20%7B%0A%09%09%09return%20elem.defaultValue%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%3C9%0A//%20Use%20getAttributeNode%20to%20fetch%20booleans%20when%20getAttribute%20lies%0Aif%20%28%20%21assert%28%20function%28%20el%20%29%20%7B%0A%09return%20el.getAttribute%28%20%22disabled%22%20%29%20%3D%3D%20null%3B%0A%7D%20%29%20%29%20%7B%0A%09addHandle%28%20booleans%2C%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20val%3B%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%09%09%09return%20elem%5B%20name%20%5D%20%3D%3D%3D%20true%20%3F%20name.toLowerCase%28%29%20%3A%0A%09%09%09%09%28%20val%20%3D%20elem.getAttributeNode%28%20name%20%29%20%29%20%26%26%20val.specified%20%3F%0A%09%09%09%09%09val.value%20%3A%0A%09%09%09%09%09null%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0Areturn%20Sizzle%3B%0A%0A%7D%20%29%28%20window%20%29%3B%0A%0A%0A%0AjQuery.find%20%3D%20Sizzle%3B%0AjQuery.expr%20%3D%20Sizzle.selectors%3B%0A%0A//%20Deprecated%0AjQuery.expr%5B%20%22%3A%22%20%5D%20%3D%20jQuery.expr.pseudos%3B%0AjQuery.uniqueSort%20%3D%20jQuery.unique%20%3D%20Sizzle.uniqueSort%3B%0AjQuery.text%20%3D%20Sizzle.getText%3B%0AjQuery.isXMLDoc%20%3D%20Sizzle.isXML%3B%0AjQuery.contains%20%3D%20Sizzle.contains%3B%0AjQuery.escapeSelector%20%3D%20Sizzle.escape%3B%0A%0A%0A%0A%0Avar%20dir%20%3D%20function%28%20elem%2C%20dir%2C%20until%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%2C%0A%09%09truncate%20%3D%20until%20%21%3D%3D%20undefined%3B%0A%0A%09while%20%28%20%28%20elem%20%3D%20elem%5B%20dir%20%5D%20%29%20%26%26%20elem.nodeType%20%21%3D%3D%209%20%29%20%7B%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09if%20%28%20truncate%20%26%26%20jQuery%28%20elem%20%29.is%28%20until%20%29%20%29%20%7B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09matched.push%28%20elem%20%29%3B%0A%09%09%7D%0A%09%7D%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20siblings%20%3D%20function%28%20n%2C%20elem%20%29%20%7B%0A%09var%20matched%20%3D%20%5B%5D%3B%0A%0A%09for%20%28%20%3B%20n%3B%20n%20%3D%20n.nextSibling%20%29%20%7B%0A%09%09if%20%28%20n.nodeType%20%3D%3D%3D%201%20%26%26%20n%20%21%3D%3D%20elem%20%29%20%7B%0A%09%09%09matched.push%28%20n%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20matched%3B%0A%7D%3B%0A%0A%0Avar%20rneedsContext%20%3D%20jQuery.expr.match.needsContext%3B%0A%0A%0A%0Afunction%20nodeName%28%20elem%2C%20name%20%29%20%7B%0A%0A%20%20return%20elem.nodeName%20%26%26%20elem.nodeName.toLowerCase%28%29%20%3D%3D%3D%20name.toLowerCase%28%29%3B%0A%0A%7D%3B%0Avar%20rsingleTag%20%3D%20%28%20/%5E%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%3A%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29%5B%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%5C/%3F%3E%28%3F%3A%3C%5C/%5C1%3E%7C%29%24/i%20%29%3B%0A%0A%0A%0A//%20Implement%20the%20identical%20functionality%20for%20filter%20and%20not%0Afunction%20winnow%28%20elements%2C%20qualifier%2C%20not%20%29%20%7B%0A%09if%20%28%20isFunction%28%20qualifier%20%29%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%2C%20i%20%29%20%7B%0A%09%09%09return%20%21%21qualifier.call%28%20elem%2C%20i%2C%20elem%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Single%20element%0A%09if%20%28%20qualifier.nodeType%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20elem%20%3D%3D%3D%20qualifier%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Arraylike%20of%20elements%20%28jQuery%2C%20arguments%2C%20Array%29%0A%09if%20%28%20typeof%20qualifier%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20jQuery.grep%28%20elements%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20%28%20indexOf.call%28%20qualifier%2C%20elem%20%29%20%3E%20-1%20%29%20%21%3D%3D%20not%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Filtered%20directly%20for%20both%20simple%20and%20complex%20selectors%0A%09return%20jQuery.filter%28%20qualifier%2C%20elements%2C%20not%20%29%3B%0A%7D%0A%0AjQuery.filter%20%3D%20function%28%20expr%2C%20elems%2C%20not%20%29%20%7B%0A%09var%20elem%20%3D%20elems%5B%200%20%5D%3B%0A%0A%09if%20%28%20not%20%29%20%7B%0A%09%09expr%20%3D%20%22%3Anot%28%22%20%2B%20expr%20%2B%20%22%29%22%3B%0A%09%7D%0A%0A%09if%20%28%20elems.length%20%3D%3D%3D%201%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09return%20jQuery.find.matchesSelector%28%20elem%2C%20expr%20%29%20%3F%20%5B%20elem%20%5D%20%3A%20%5B%5D%3B%0A%09%7D%0A%0A%09return%20jQuery.find.matches%28%20expr%2C%20jQuery.grep%28%20elems%2C%20function%28%20elem%20%29%20%7B%0A%09%09return%20elem.nodeType%20%3D%3D%3D%201%3B%0A%09%7D%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09find%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20i%2C%20ret%2C%0A%09%09%09len%20%3D%20this.length%2C%0A%09%09%09self%20%3D%20this%3B%0A%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20this.pushStack%28%20jQuery%28%20selector%20%29.filter%28%20function%28%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09if%20%28%20jQuery.contains%28%20self%5B%20i%20%5D%2C%20this%20%29%20%29%20%7B%0A%09%09%09%09%09%09return%20true%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20this.pushStack%28%20%5B%5D%20%29%3B%0A%0A%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09jQuery.find%28%20selector%2C%20self%5B%20i%20%5D%2C%20ret%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20len%20%3E%201%20%3F%20jQuery.uniqueSort%28%20ret%20%29%20%3A%20ret%3B%0A%09%7D%2C%0A%09filter%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20false%20%29%20%29%3B%0A%09%7D%2C%0A%09not%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.pushStack%28%20winnow%28%20this%2C%20selector%20%7C%7C%20%5B%5D%2C%20true%20%29%20%29%3B%0A%09%7D%2C%0A%09is%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20%21%21winnow%28%0A%09%09%09this%2C%0A%0A%09%09%09//%20If%20this%20is%20a%20positional/relative%20selector%2C%20check%20membership%20in%20the%20returned%20set%0A%09%09%09//%20so%20%24%28%22p%3Afirst%22%29.is%28%22p%3Alast%22%29%20won%27t%20return%20true%20for%20a%20doc%20with%20two%20%22p%22.%0A%09%09%09typeof%20selector%20%3D%3D%3D%20%22string%22%20%26%26%20rneedsContext.test%28%20selector%20%29%20%3F%0A%09%09%09%09jQuery%28%20selector%20%29%20%3A%0A%09%09%09%09selector%20%7C%7C%20%5B%5D%2C%0A%09%09%09false%0A%09%09%29.length%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Initialize%20a%20jQuery%20object%0A%0A%0A//%20A%20central%20reference%20to%20the%20root%20jQuery%28document%29%0Avar%20rootjQuery%2C%0A%0A%09//%20A%20simple%20way%20to%20check%20for%20HTML%20strings%0A%09//%20Prioritize%20%23id%20over%20%3Ctag%3E%20to%20avoid%20XSS%20via%20location.hash%20%28%239521%29%0A%09//%20Strict%20HTML%20recognition%20%28%2311290%3A%20must%20start%20with%20%3C%29%0A%09//%20Shortcut%20simple%20%23id%20case%20for%20speed%0A%09rquickExpr%20%3D%20/%5E%28%3F%3A%5Cs%2A%28%3C%5B%5Cw%5CW%5D%2B%3E%29%5B%5E%3E%5D%2A%7C%23%28%5B%5Cw-%5D%2B%29%29%24/%2C%0A%0A%09init%20%3D%20jQuery.fn.init%20%3D%20function%28%20selector%2C%20context%2C%20root%20%29%20%7B%0A%09%09var%20match%2C%20elem%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28%22%22%29%2C%20%24%28null%29%2C%20%24%28undefined%29%2C%20%24%28false%29%0A%09%09if%20%28%20%21selector%20%29%20%7B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%0A%09%09//%20Method%20init%28%29%20accepts%20an%20alternate%20rootjQuery%0A%09%09//%20so%20migrate%20can%20support%20jQuery.sub%20%28gh-2101%29%0A%09%09root%20%3D%20root%20%7C%7C%20rootjQuery%3B%0A%0A%09%09//%20Handle%20HTML%20strings%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09if%20%28%20selector%5B%200%20%5D%20%3D%3D%3D%20%22%3C%22%20%26%26%0A%09%09%09%09selector%5B%20selector.length%20-%201%20%5D%20%3D%3D%3D%20%22%3E%22%20%26%26%0A%09%09%09%09selector.length%20%3E%3D%203%20%29%20%7B%0A%0A%09%09%09%09//%20Assume%20that%20strings%20that%20start%20and%20end%20with%20%3C%3E%20are%20HTML%20and%20skip%20the%20regex%20check%0A%09%09%09%09match%20%3D%20%5B%20null%2C%20selector%2C%20null%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09match%20%3D%20rquickExpr.exec%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Match%20html%20or%20make%20sure%20no%20context%20is%20specified%20for%20%23id%0A%09%09%09if%20%28%20match%20%26%26%20%28%20match%5B%201%20%5D%20%7C%7C%20%21context%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28html%29%20-%3E%20%24%28array%29%0A%09%09%09%09if%20%28%20match%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09%09context%20%3D%20context%20instanceof%20jQuery%20%3F%20context%5B%200%20%5D%20%3A%20context%3B%0A%0A%09%09%09%09%09//%20Option%20to%20run%20scripts%20is%20true%20for%20back-compat%0A%09%09%09%09%09//%20Intentionally%20let%20the%20error%20be%20thrown%20if%20parseHTML%20is%20not%20present%0A%09%09%09%09%09jQuery.merge%28%20this%2C%20jQuery.parseHTML%28%0A%09%09%09%09%09%09match%5B%201%20%5D%2C%0A%09%09%09%09%09%09context%20%26%26%20context.nodeType%20%3F%20context.ownerDocument%20%7C%7C%20context%20%3A%20document%2C%0A%09%09%09%09%09%09true%0A%09%09%09%09%09%29%20%29%3B%0A%0A%09%09%09%09%09//%20HANDLE%3A%20%24%28html%2C%20props%29%0A%09%09%09%09%09if%20%28%20rsingleTag.test%28%20match%5B%201%20%5D%20%29%20%26%26%20jQuery.isPlainObject%28%20context%20%29%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20match%20in%20context%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Properties%20of%20context%20are%20called%20as%20methods%20if%20possible%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20this%5B%20match%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09this%5B%20match%20%5D%28%20context%5B%20match%20%5D%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20...and%20otherwise%20set%20as%20attributes%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09this.attr%28%20match%2C%20context%5B%20match%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20this%3B%0A%0A%09%09%09%09//%20HANDLE%3A%20%24%28%23id%29%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09elem%20%3D%20document.getElementById%28%20match%5B%202%20%5D%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20elem%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Inject%20the%20element%20directly%20into%20the%20jQuery%20object%0A%09%09%09%09%09%09this%5B%200%20%5D%20%3D%20elem%3B%0A%09%09%09%09%09%09this.length%20%3D%201%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20%24%28...%29%29%0A%09%09%09%7D%20else%20if%20%28%20%21context%20%7C%7C%20context.jquery%20%29%20%7B%0A%09%09%09%09return%20%28%20context%20%7C%7C%20root%20%29.find%28%20selector%20%29%3B%0A%0A%09%09%09//%20HANDLE%3A%20%24%28expr%2C%20context%29%0A%09%09%09//%20%28which%20is%20just%20equivalent%20to%3A%20%24%28context%29.find%28expr%29%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09return%20this.constructor%28%20context%20%29.find%28%20selector%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20HANDLE%3A%20%24%28DOMElement%29%0A%09%09%7D%20else%20if%20%28%20selector.nodeType%20%29%20%7B%0A%09%09%09this%5B%200%20%5D%20%3D%20selector%3B%0A%09%09%09this.length%20%3D%201%3B%0A%09%09%09return%20this%3B%0A%0A%09%09//%20HANDLE%3A%20%24%28function%29%0A%09%09//%20Shortcut%20for%20document%20ready%0A%09%09%7D%20else%20if%20%28%20isFunction%28%20selector%20%29%20%29%20%7B%0A%09%09%09return%20root.ready%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09root.ready%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Execute%20immediately%20if%20ready%20is%20not%20present%0A%09%09%09%09selector%28%20jQuery%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.makeArray%28%20selector%2C%20this%20%29%3B%0A%09%7D%3B%0A%0A//%20Give%20the%20init%20function%20the%20jQuery%20prototype%20for%20later%20instantiation%0Ainit.prototype%20%3D%20jQuery.fn%3B%0A%0A//%20Initialize%20central%20reference%0ArootjQuery%20%3D%20jQuery%28%20document%20%29%3B%0A%0A%0Avar%20rparentsprev%20%3D%20/%5E%28%3F%3Aparents%7Cprev%28%3F%3AUntil%7CAll%29%29/%2C%0A%0A%09//%20Methods%20guaranteed%20to%20produce%20a%20unique%20set%20when%20starting%20from%20a%20unique%20set%0A%09guaranteedUnique%20%3D%20%7B%0A%09%09children%3A%20true%2C%0A%09%09contents%3A%20true%2C%0A%09%09next%3A%20true%2C%0A%09%09prev%3A%20true%0A%09%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09has%3A%20function%28%20target%20%29%20%7B%0A%09%09var%20targets%20%3D%20jQuery%28%20target%2C%20this%20%29%2C%0A%09%09%09l%20%3D%20targets.length%3B%0A%0A%09%09return%20this.filter%28%20function%28%29%20%7B%0A%09%09%09var%20i%20%3D%200%3B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20jQuery.contains%28%20this%2C%20targets%5B%20i%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09closest%3A%20function%28%20selectors%2C%20context%20%29%20%7B%0A%09%09var%20cur%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09l%20%3D%20this.length%2C%0A%09%09%09matched%20%3D%20%5B%5D%2C%0A%09%09%09targets%20%3D%20typeof%20selectors%20%21%3D%3D%20%22string%22%20%26%26%20jQuery%28%20selectors%20%29%3B%0A%0A%09%09//%20Positional%20selectors%20never%20match%2C%20since%20there%27s%20no%20_selection_%20context%0A%09%09if%20%28%20%21rneedsContext.test%28%20selectors%20%29%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09for%20%28%20cur%20%3D%20this%5B%20i%20%5D%3B%20cur%20%26%26%20cur%20%21%3D%3D%20context%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%0A%09%09%09%09%09//%20Always%20skip%20document%20fragments%0A%09%09%09%09%09if%20%28%20cur.nodeType%20%3C%2011%20%26%26%20%28%20targets%20%3F%0A%09%09%09%09%09%09targets.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%0A%09%09%09%09%09%09//%20Don%27t%20pass%20non-elements%20to%20Sizzle%0A%09%09%09%09%09%09cur.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%09%09%09jQuery.find.matchesSelector%28%20cur%2C%20selectors%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09matched.push%28%20cur%20%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched.length%20%3E%201%20%3F%20jQuery.uniqueSort%28%20matched%20%29%20%3A%20matched%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Determine%20the%20position%20of%20an%20element%20within%20the%20set%0A%09index%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20No%20argument%2C%20return%20index%20in%20parent%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%20%28%20this%5B%200%20%5D%20%26%26%20this%5B%200%20%5D.parentNode%20%29%20%3F%20this.first%28%29.prevAll%28%29.length%20%3A%20-1%3B%0A%09%09%7D%0A%0A%09%09//%20Index%20in%20selector%0A%09%09if%20%28%20typeof%20elem%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09return%20indexOf.call%28%20jQuery%28%20elem%20%29%2C%20this%5B%200%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Locate%20the%20position%20of%20the%20desired%20element%0A%09%09return%20indexOf.call%28%20this%2C%0A%0A%09%09%09//%20If%20it%20receives%20a%20jQuery%20object%2C%20the%20first%20element%20is%20used%0A%09%09%09elem.jquery%20%3F%20elem%5B%200%20%5D%20%3A%20elem%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09add%3A%20function%28%20selector%2C%20context%20%29%20%7B%0A%09%09return%20this.pushStack%28%0A%09%09%09jQuery.uniqueSort%28%0A%09%09%09%09jQuery.merge%28%20this.get%28%29%2C%20jQuery%28%20selector%2C%20context%20%29%20%29%0A%09%09%09%29%0A%09%09%29%3B%0A%09%7D%2C%0A%0A%09addBack%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20this.add%28%20selector%20%3D%3D%20null%20%3F%0A%09%09%09this.prevObject%20%3A%20this.prevObject.filter%28%20selector%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0Afunction%20sibling%28%20cur%2C%20dir%20%29%20%7B%0A%09while%20%28%20%28%20cur%20%3D%20cur%5B%20dir%20%5D%20%29%20%26%26%20cur.nodeType%20%21%3D%3D%201%20%29%20%7B%7D%0A%09return%20cur%3B%0A%7D%0A%0AjQuery.each%28%20%7B%0A%09parent%3A%20function%28%20elem%20%29%20%7B%0A%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09return%20parent%20%26%26%20parent.nodeType%20%21%3D%3D%2011%20%3F%20parent%20%3A%20null%3B%0A%09%7D%2C%0A%09parents%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%20%29%3B%0A%09%7D%2C%0A%09parentsUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22parentNode%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09next%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prev%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20sibling%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%20%29%3B%0A%09%7D%2C%0A%09prevAll%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%20%29%3B%0A%09%7D%2C%0A%09nextUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22nextSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09prevUntil%3A%20function%28%20elem%2C%20_i%2C%20until%20%29%20%7B%0A%09%09return%20dir%28%20elem%2C%20%22previousSibling%22%2C%20until%20%29%3B%0A%09%7D%2C%0A%09siblings%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20%28%20elem.parentNode%20%7C%7C%20%7B%7D%20%29.firstChild%2C%20elem%20%29%3B%0A%09%7D%2C%0A%09children%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20siblings%28%20elem.firstChild%20%29%3B%0A%09%7D%2C%0A%09contents%3A%20function%28%20elem%20%29%20%7B%0A%09%09if%20%28%20elem.contentDocument%20%21%3D%20null%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%2011%2B%0A%09%09%09//%20%3Cobject%3E%20elements%20with%20no%20%60data%60%20attribute%20has%20an%20object%0A%09%09%09//%20%60contentDocument%60%20with%20a%20%60null%60%20prototype.%0A%09%09%09getProto%28%20elem.contentDocument%20%29%20%29%20%7B%0A%0A%09%09%09return%20elem.contentDocument%3B%0A%09%09%7D%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%2C%20iOS%207%20only%2C%20Android%20Browser%20%3C%3D4.3%20only%0A%09%09//%20Treat%20the%20template%20element%20as%20a%20regular%20one%20in%20browsers%20that%0A%09%09//%20don%27t%20support%20it.%0A%09%09if%20%28%20nodeName%28%20elem%2C%20%22template%22%20%29%20%29%20%7B%0A%09%09%09elem%20%3D%20elem.content%20%7C%7C%20elem%3B%0A%09%09%7D%0A%0A%09%09return%20jQuery.merge%28%20%5B%5D%2C%20elem.childNodes%20%29%3B%0A%09%7D%0A%7D%2C%20function%28%20name%2C%20fn%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20until%2C%20selector%20%29%20%7B%0A%09%09var%20matched%20%3D%20jQuery.map%28%20this%2C%20fn%2C%20until%20%29%3B%0A%0A%09%09if%20%28%20name.slice%28%20-5%20%29%20%21%3D%3D%20%22Until%22%20%29%20%7B%0A%09%09%09selector%20%3D%20until%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20selector%20%26%26%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09matched%20%3D%20jQuery.filter%28%20selector%2C%20matched%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20this.length%20%3E%201%20%29%20%7B%0A%0A%09%09%09//%20Remove%20duplicates%0A%09%09%09if%20%28%20%21guaranteedUnique%5B%20name%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.uniqueSort%28%20matched%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Reverse%20order%20for%20parents%2A%20and%20prev-derivatives%0A%09%09%09if%20%28%20rparentsprev.test%28%20name%20%29%20%29%20%7B%0A%09%09%09%09matched.reverse%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20matched%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnothtmlwhite%20%3D%20%28%20/%5B%5E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2B/g%20%29%3B%0A%0A%0A%0A//%20Convert%20String-formatted%20options%20into%20Object-formatted%20ones%0Afunction%20createOptions%28%20options%20%29%20%7B%0A%09var%20object%20%3D%20%7B%7D%3B%0A%09jQuery.each%28%20options.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20flag%20%29%20%7B%0A%09%09object%5B%20flag%20%5D%20%3D%20true%3B%0A%09%7D%20%29%3B%0A%09return%20object%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Create%20a%20callback%20list%20using%20the%20following%20parameters%3A%0A%20%2A%0A%20%2A%09options%3A%20an%20optional%20list%20of%20space-separated%20options%20that%20will%20change%20how%0A%20%2A%09%09%09the%20callback%20list%20behaves%20or%20a%20more%20traditional%20option%20object%0A%20%2A%0A%20%2A%20By%20default%20a%20callback%20list%20will%20act%20like%20an%20event%20callback%20list%20and%20can%20be%0A%20%2A%20%22fired%22%20multiple%20times.%0A%20%2A%0A%20%2A%20Possible%20options%3A%0A%20%2A%0A%20%2A%09once%3A%09%09%09will%20ensure%20the%20callback%20list%20can%20only%20be%20fired%20once%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09memory%3A%09%09%09will%20keep%20track%20of%20previous%20values%20and%20will%20call%20any%20callback%20added%0A%20%2A%09%09%09%09%09after%20the%20list%20has%20been%20fired%20right%20away%20with%20the%20latest%20%22memorized%22%0A%20%2A%09%09%09%09%09values%20%28like%20a%20Deferred%29%0A%20%2A%0A%20%2A%09unique%3A%09%09%09will%20ensure%20a%20callback%20can%20only%20be%20added%20once%20%28no%20duplicate%20in%20the%20list%29%0A%20%2A%0A%20%2A%09stopOnFalse%3A%09interrupt%20callings%20when%20a%20callback%20returns%20false%0A%20%2A%0A%20%2A/%0AjQuery.Callbacks%20%3D%20function%28%20options%20%29%20%7B%0A%0A%09//%20Convert%20options%20from%20String-formatted%20to%20Object-formatted%20if%20needed%0A%09//%20%28we%20check%20in%20cache%20first%29%0A%09options%20%3D%20typeof%20options%20%3D%3D%3D%20%22string%22%20%3F%0A%09%09createOptions%28%20options%20%29%20%3A%0A%09%09jQuery.extend%28%20%7B%7D%2C%20options%20%29%3B%0A%0A%09var%20//%20Flag%20to%20know%20if%20list%20is%20currently%20firing%0A%09%09firing%2C%0A%0A%09%09//%20Last%20fire%20value%20for%20non-forgettable%20lists%0A%09%09memory%2C%0A%0A%09%09//%20Flag%20to%20know%20if%20list%20was%20already%20fired%0A%09%09fired%2C%0A%0A%09%09//%20Flag%20to%20prevent%20firing%0A%09%09locked%2C%0A%0A%09%09//%20Actual%20callback%20list%0A%09%09list%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Queue%20of%20execution%20data%20for%20repeatable%20lists%0A%09%09queue%20%3D%20%5B%5D%2C%0A%0A%09%09//%20Index%20of%20currently%20firing%20callback%20%28modified%20by%20add/remove%20as%20needed%29%0A%09%09firingIndex%20%3D%20-1%2C%0A%0A%09%09//%20Fire%20callbacks%0A%09%09fire%20%3D%20function%28%29%20%7B%0A%0A%09%09%09//%20Enforce%20single-firing%0A%09%09%09locked%20%3D%20locked%20%7C%7C%20options.once%3B%0A%0A%09%09%09//%20Execute%20callbacks%20for%20all%20pending%20executions%2C%0A%09%09%09//%20respecting%20firingIndex%20overrides%20and%20runtime%20changes%0A%09%09%09fired%20%3D%20firing%20%3D%20true%3B%0A%09%09%09for%20%28%20%3B%20queue.length%3B%20firingIndex%20%3D%20-1%20%29%20%7B%0A%09%09%09%09memory%20%3D%20queue.shift%28%29%3B%0A%09%09%09%09while%20%28%20%2B%2BfiringIndex%20%3C%20list.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Run%20callback%20and%20check%20for%20early%20termination%0A%09%09%09%09%09if%20%28%20list%5B%20firingIndex%20%5D.apply%28%20memory%5B%200%20%5D%2C%20memory%5B%201%20%5D%20%29%20%3D%3D%3D%20false%20%26%26%0A%09%09%09%09%09%09options.stopOnFalse%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Jump%20to%20end%20and%20forget%20the%20data%20so%20.add%20doesn%27t%20re-fire%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%3B%0A%09%09%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Forget%20the%20data%20if%20we%27re%20done%20with%20it%0A%09%09%09if%20%28%20%21options.memory%20%29%20%7B%0A%09%09%09%09memory%20%3D%20false%3B%0A%09%09%09%7D%0A%0A%09%09%09firing%20%3D%20false%3B%0A%0A%09%09%09//%20Clean%20up%20if%20we%27re%20done%20firing%20for%20good%0A%09%09%09if%20%28%20locked%20%29%20%7B%0A%0A%09%09%09%09//%20Keep%20an%20empty%20list%20if%20we%20have%20data%20for%20future%20add%20calls%0A%09%09%09%09if%20%28%20memory%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%0A%09%09%09%09//%20Otherwise%2C%20this%20object%20is%20spent%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09list%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09//%20Actual%20Callbacks%20object%0A%09%09self%20%3D%20%7B%0A%0A%09%09%09//%20Add%20a%20callback%20or%20a%20collection%20of%20callbacks%20to%20the%20list%0A%09%09%09add%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%0A%09%09%09%09%09//%20If%20we%20have%20memory%20from%20a%20past%20run%2C%20we%20should%20fire%20after%20adding%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09firingIndex%20%3D%20list.length%20-%201%3B%0A%09%09%09%09%09%09queue.push%28%20memory%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%28%20function%20add%28%20args%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20args%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20isFunction%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20%21options.unique%20%7C%7C%20%21self.has%28%20arg%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09list.push%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20arg%20%26%26%20arg.length%20%26%26%20toType%28%20arg%20%29%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Inspect%20recursively%0A%09%09%09%09%09%09%09%09add%28%20arg%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%7D%20%29%28%20arguments%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20a%20callback%20from%20the%20list%0A%09%09%09remove%3A%20function%28%29%20%7B%0A%09%09%09%09jQuery.each%28%20arguments%2C%20function%28%20_%2C%20arg%20%29%20%7B%0A%09%09%09%09%09var%20index%3B%0A%09%09%09%09%09while%20%28%20%28%20index%20%3D%20jQuery.inArray%28%20arg%2C%20list%2C%20index%20%29%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09list.splice%28%20index%2C%201%20%29%3B%0A%0A%09%09%09%09%09%09//%20Handle%20firing%20indexes%0A%09%09%09%09%09%09if%20%28%20index%20%3C%3D%20firingIndex%20%29%20%7B%0A%09%09%09%09%09%09%09firingIndex--%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Check%20if%20a%20given%20callback%20is%20in%20the%20list.%0A%09%09%09//%20If%20no%20argument%20is%20given%2C%20return%20whether%20or%20not%20list%20has%20callbacks%20attached.%0A%09%09%09has%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09return%20fn%20%3F%0A%09%09%09%09%09jQuery.inArray%28%20fn%2C%20list%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09list.length%20%3E%200%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Remove%20all%20callbacks%20from%20the%20list%0A%09%09%09empty%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20list%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20%5B%5D%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%20and%20.add%0A%09%09%09//%20Abort%20any%20current/pending%20executions%0A%09%09%09//%20Clear%20all%20callbacks%20and%20values%0A%09%09%09disable%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09disabled%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21list%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Disable%20.fire%0A%09%09%09//%20Also%20disable%20.add%20unless%20we%20have%20memory%20%28since%20it%20would%20have%20no%20effect%29%0A%09%09%09//%20Abort%20any%20pending%20executions%0A%09%09%09lock%3A%20function%28%29%20%7B%0A%09%09%09%09locked%20%3D%20queue%20%3D%20%5B%5D%3B%0A%09%09%09%09if%20%28%20%21memory%20%26%26%20%21firing%20%29%20%7B%0A%09%09%09%09%09list%20%3D%20memory%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%09%09%09locked%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21locked%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20callbacks%20with%20the%20given%20context%20and%20arguments%0A%09%09%09fireWith%3A%20function%28%20context%2C%20args%20%29%20%7B%0A%09%09%09%09if%20%28%20%21locked%20%29%20%7B%0A%09%09%09%09%09args%20%3D%20args%20%7C%7C%20%5B%5D%3B%0A%09%09%09%09%09args%20%3D%20%5B%20context%2C%20args.slice%20%3F%20args.slice%28%29%20%3A%20args%20%5D%3B%0A%09%09%09%09%09queue.push%28%20args%20%29%3B%0A%09%09%09%09%09if%20%28%20%21firing%20%29%20%7B%0A%09%09%09%09%09%09fire%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20Call%20all%20the%20callbacks%20with%20the%20given%20arguments%0A%09%09%09fire%3A%20function%28%29%20%7B%0A%09%09%09%09self.fireWith%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20To%20know%20if%20the%20callbacks%20have%20already%20been%20called%20at%20least%20once%0A%09%09%09fired%3A%20function%28%29%20%7B%0A%09%09%09%09return%20%21%21fired%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%0A%09return%20self%3B%0A%7D%3B%0A%0A%0Afunction%20Identity%28%20v%20%29%20%7B%0A%09return%20v%3B%0A%7D%0Afunction%20Thrower%28%20ex%20%29%20%7B%0A%09throw%20ex%3B%0A%7D%0A%0Afunction%20adoptValue%28%20value%2C%20resolve%2C%20reject%2C%20noValue%20%29%20%7B%0A%09var%20method%3B%0A%0A%09try%20%7B%0A%0A%09%09//%20Check%20for%20promise%20aspect%20first%20to%20privilege%20synchronous%20behavior%0A%09%09if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.promise%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%20%29.done%28%20resolve%20%29.fail%28%20reject%20%29%3B%0A%0A%09%09//%20Other%20thenables%0A%09%09%7D%20else%20if%20%28%20value%20%26%26%20isFunction%28%20%28%20method%20%3D%20value.then%20%29%20%29%20%29%20%7B%0A%09%09%09method.call%28%20value%2C%20resolve%2C%20reject%20%29%3B%0A%0A%09%09//%20Other%20non-thenables%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Control%20%60resolve%60%20arguments%20by%20letting%20Array%23slice%20cast%20boolean%20%60noValue%60%20to%20integer%3A%0A%09%09%09//%20%2A%20false%3A%20%5B%20value%20%5D.slice%28%200%20%29%20%3D%3E%20resolve%28%20value%20%29%0A%09%09%09//%20%2A%20true%3A%20%5B%20value%20%5D.slice%28%201%20%29%20%3D%3E%20resolve%28%29%0A%09%09%09resolve.apply%28%20undefined%2C%20%5B%20value%20%5D.slice%28%20noValue%20%29%20%29%3B%0A%09%09%7D%0A%0A%09//%20For%20Promises/A%2B%2C%20convert%20exceptions%20into%20rejections%0A%09//%20Since%20jQuery.when%20doesn%27t%20unwrap%20thenables%2C%20we%20can%20skip%20the%20extra%20checks%20appearing%20in%0A%09//%20Deferred%23then%20to%20conditionally%20suppress%20rejection.%0A%09%7D%20catch%20%28%20value%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Android%204.0%20only%0A%09%09//%20Strict%20mode%20functions%20invoked%20without%20.call/.apply%20get%20global-object%20context%0A%09%09reject.apply%28%20undefined%2C%20%5B%20value%20%5D%20%29%3B%0A%09%7D%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09Deferred%3A%20function%28%20func%20%29%20%7B%0A%09%09var%20tuples%20%3D%20%5B%0A%0A%09%09%09%09//%20action%2C%20add%20listener%2C%20callbacks%2C%0A%09%09%09%09//%20...%20.then%20handlers%2C%20argument%20index%2C%20%5Bfinal%20state%5D%0A%09%09%09%09%5B%20%22notify%22%2C%20%22progress%22%2C%20jQuery.Callbacks%28%20%22memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22memory%22%20%29%2C%202%20%5D%2C%0A%09%09%09%09%5B%20%22resolve%22%2C%20%22done%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%200%2C%20%22resolved%22%20%5D%2C%0A%09%09%09%09%5B%20%22reject%22%2C%20%22fail%22%2C%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%09%09%09%09%09jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%201%2C%20%22rejected%22%20%5D%0A%09%09%09%5D%2C%0A%09%09%09state%20%3D%20%22pending%22%2C%0A%09%09%09promise%20%3D%20%7B%0A%09%09%09%09state%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20state%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09always%3A%20function%28%29%20%7B%0A%09%09%09%09%09deferred.done%28%20arguments%20%29.fail%28%20arguments%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09%22catch%22%3A%20function%28%20fn%20%29%20%7B%0A%09%09%09%09%09return%20promise.then%28%20null%2C%20fn%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Keep%20pipe%20for%20back-compat%0A%09%09%09%09pipe%3A%20function%28%20/%2A%20fnDone%2C%20fnFail%2C%20fnProgress%20%2A/%20%29%20%7B%0A%09%09%09%09%09var%20fns%20%3D%20arguments%3B%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%09%09%09%09%09%09jQuery.each%28%20tuples%2C%20function%28%20_i%2C%20tuple%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Map%20tuples%20%28progress%2C%20done%2C%20fail%29%20to%20arguments%20%28done%2C%20fail%2C%20progress%29%0A%09%09%09%09%09%09%09var%20fn%20%3D%20isFunction%28%20fns%5B%20tuple%5B%204%20%5D%20%5D%20%29%20%26%26%20fns%5B%20tuple%5B%204%20%5D%20%5D%3B%0A%0A%09%09%09%09%09%09%09//%20deferred.progress%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.notify%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.done%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.resolve%20%7D%29%0A%09%09%09%09%09%09%09//%20deferred.fail%28function%28%29%20%7B%20bind%20to%20newDefer%20or%20newDefer.reject%20%7D%29%0A%09%09%09%09%09%09%09deferred%5B%20tuple%5B%201%20%5D%20%5D%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09var%20returned%20%3D%20fn%20%26%26%20fn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09%09%09%09%09if%20%28%20returned%20%26%26%20isFunction%28%20returned.promise%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09returned.promise%28%29%0A%09%09%09%09%09%09%09%09%09%09.progress%28%20newDefer.notify%20%29%0A%09%09%09%09%09%09%09%09%09%09.done%28%20newDefer.resolve%20%29%0A%09%09%09%09%09%09%09%09%09%09.fail%28%20newDefer.reject%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09newDefer%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%0A%09%09%09%09%09%09%09%09%09%09this%2C%0A%09%09%09%09%09%09%09%09%09%09fn%20%3F%20%5B%20returned%20%5D%20%3A%20arguments%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09fns%20%3D%20null%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09then%3A%20function%28%20onFulfilled%2C%20onRejected%2C%20onProgress%20%29%20%7B%0A%09%09%09%09%09var%20maxDepth%20%3D%200%3B%0A%09%09%09%09%09function%20resolve%28%20depth%2C%20deferred%2C%20handler%2C%20special%20%29%20%7B%0A%09%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09%09var%20that%20%3D%20this%2C%0A%09%09%09%09%09%09%09%09args%20%3D%20arguments%2C%0A%09%09%09%09%09%09%09%09mightThrow%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09var%20returned%2C%20then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.3%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-59%0A%09%09%09%09%09%09%09%09%09//%20Ignore%20double-resolution%20attempts%0A%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%3C%20maxDepth%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09returned%20%3D%20handler.apply%28%20that%2C%20args%20%29%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.1%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-48%0A%09%09%09%09%09%09%09%09%09if%20%28%20returned%20%3D%3D%3D%20deferred.promise%28%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09throw%20new%20TypeError%28%20%22Thenable%20self-resolution%22%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20sections%202.3.3.1%2C%203.5%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-54%0A%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-75%0A%09%09%09%09%09%09%09%09%09//%20Retrieve%20%60then%60%20only%20once%0A%09%09%09%09%09%09%09%09%09then%20%3D%20returned%20%26%26%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.4%0A%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-64%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20check%20objects%20and%20functions%20for%20thenability%0A%09%09%09%09%09%09%09%09%09%09%28%20typeof%20returned%20%3D%3D%3D%20%22object%22%20%7C%7C%0A%09%09%09%09%09%09%09%09%09%09%09typeof%20returned%20%3D%3D%3D%20%22function%22%20%29%20%26%26%0A%09%09%09%09%09%09%09%09%09%09returned.then%3B%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20a%20returned%20thenable%0A%09%09%09%09%09%09%09%09%09if%20%28%20isFunction%28%20then%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Special%20processors%20%28notify%29%20just%20wait%20for%20resolution%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20special%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Normal%20processors%20%28resolve%29%20also%20hook%20into%20progress%0A%09%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20...and%20disregard%20older%20resolution%20values%0A%09%09%09%09%09%09%09%09%09%09%09maxDepth%2B%2B%3B%0A%0A%09%09%09%09%09%09%09%09%09%09%09then.call%28%0A%09%09%09%09%09%09%09%09%09%09%09%09returned%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Thrower%2C%20special%20%29%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09resolve%28%20maxDepth%2C%20deferred%2C%20Identity%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09deferred.notifyWith%20%29%0A%09%09%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09//%20Handle%20all%20other%20returned%20values%0A%09%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Identity%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20returned%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09//%20Process%20the%20value%28s%29%0A%09%09%09%09%09%09%09%09%09%09//%20Default%20process%20is%20resolve%0A%09%09%09%09%09%09%09%09%09%09%28%20special%20%7C%7C%20deferred.resolveWith%20%29%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09%09%09%09//%20Only%20normal%20processors%20%28resolve%29%20catch%20and%20reject%20exceptions%0A%09%09%09%09%09%09%09%09process%20%3D%20special%20%3F%0A%09%09%09%09%09%09%09%09%09mightThrow%20%3A%0A%09%09%09%09%09%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09mightThrow%28%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.exceptionHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09jQuery.Deferred.exceptionHook%28%20e%2C%0A%09%09%09%09%09%09%09%09%09%09%09%09%09process.stackTrace%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.4.1%0A%09%09%09%09%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-61%0A%09%09%09%09%09%09%09%09%09%09%09//%20Ignore%20post-resolution%20exceptions%0A%09%09%09%09%09%09%09%09%09%09%09if%20%28%20depth%20%2B%201%20%3E%3D%20maxDepth%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20Only%20substitute%20handlers%20pass%20on%20context%0A%09%09%09%09%09%09%09%09%09%09%09%09//%20and%20multiple%20values%20%28non-spec%20behavior%29%0A%09%09%09%09%09%09%09%09%09%09%09%09if%20%28%20handler%20%21%3D%3D%20Thrower%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09that%20%3D%20undefined%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%09args%20%3D%20%5B%20e%20%5D%3B%0A%09%09%09%09%09%09%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09deferred.rejectWith%28%20that%2C%20args%20%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%3B%0A%0A%09%09%09%09%09%09%09//%20Support%3A%20Promises/A%2B%20section%202.3.3.3.1%0A%09%09%09%09%09%09%09//%20https%3A//promisesaplus.com/%23point-57%0A%09%09%09%09%09%09%09//%20Re-resolve%20promises%20immediately%20to%20dodge%20false%20rejection%20from%0A%09%09%09%09%09%09%09//%20subsequent%20errors%0A%09%09%09%09%09%09%09if%20%28%20depth%20%29%20%7B%0A%09%09%09%09%09%09%09%09process%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Call%20an%20optional%20hook%20to%20record%20the%20stack%2C%20in%20case%20of%20exception%0A%09%09%09%09%09%09%09%09//%20since%20it%27s%20otherwise%20lost%20when%20execution%20goes%20async%0A%09%09%09%09%09%09%09%09if%20%28%20jQuery.Deferred.getStackHook%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09process.stackTrace%20%3D%20jQuery.Deferred.getStackHook%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09window.setTimeout%28%20process%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09return%20jQuery.Deferred%28%20function%28%20newDefer%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20progress_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onProgress%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onProgress%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%2C%0A%09%09%09%09%09%09%09%09newDefer.notifyWith%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20fulfilled_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%201%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onFulfilled%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onFulfilled%20%3A%0A%09%09%09%09%09%09%09%09%09Identity%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%0A%09%09%09%09%09%09//%20rejected_handlers.add%28%20...%20%29%0A%09%09%09%09%09%09tuples%5B%202%20%5D%5B%203%20%5D.add%28%0A%09%09%09%09%09%09%09resolve%28%0A%09%09%09%09%09%09%09%090%2C%0A%09%09%09%09%09%09%09%09newDefer%2C%0A%09%09%09%09%09%09%09%09isFunction%28%20onRejected%20%29%20%3F%0A%09%09%09%09%09%09%09%09%09onRejected%20%3A%0A%09%09%09%09%09%09%09%09%09Thrower%0A%09%09%09%09%09%09%09%29%0A%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%7D%20%29.promise%28%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Get%20a%20promise%20for%20this%20deferred%0A%09%09%09%09//%20If%20obj%20is%20provided%2C%20the%20promise%20aspect%20is%20added%20to%20the%20object%0A%09%09%09%09promise%3A%20function%28%20obj%20%29%20%7B%0A%09%09%09%09%09return%20obj%20%21%3D%20null%20%3F%20jQuery.extend%28%20obj%2C%20promise%20%29%20%3A%20promise%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09deferred%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Add%20list-specific%20methods%0A%09%09jQuery.each%28%20tuples%2C%20function%28%20i%2C%20tuple%20%29%20%7B%0A%09%09%09var%20list%20%3D%20tuple%5B%202%20%5D%2C%0A%09%09%09%09stateString%20%3D%20tuple%5B%205%20%5D%3B%0A%0A%09%09%09//%20promise.progress%20%3D%20list.add%0A%09%09%09//%20promise.done%20%3D%20list.add%0A%09%09%09//%20promise.fail%20%3D%20list.add%0A%09%09%09promise%5B%20tuple%5B%201%20%5D%20%5D%20%3D%20list.add%3B%0A%0A%09%09%09//%20Handle%20state%0A%09%09%09if%20%28%20stateString%20%29%20%7B%0A%09%09%09%09list.add%28%0A%09%09%09%09%09function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20state%20%3D%20%22resolved%22%20%28i.e.%2C%20fulfilled%29%0A%09%09%09%09%09%09//%20state%20%3D%20%22rejected%22%0A%09%09%09%09%09%09state%20%3D%20stateString%3B%0A%09%09%09%09%09%7D%2C%0A%0A%09%09%09%09%09//%20rejected_callbacks.disable%0A%09%09%09%09%09//%20fulfilled_callbacks.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%202%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20rejected_handlers.disable%0A%09%09%09%09%09//%20fulfilled_handlers.disable%0A%09%09%09%09%09tuples%5B%203%20-%20i%20%5D%5B%203%20%5D.disable%2C%0A%0A%09%09%09%09%09//%20progress_callbacks.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%202%20%5D.lock%2C%0A%0A%09%09%09%09%09//%20progress_handlers.lock%0A%09%09%09%09%09tuples%5B%200%20%5D%5B%203%20%5D.lock%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20progress_handlers.fire%0A%09%09%09//%20fulfilled_handlers.fire%0A%09%09%09//%20rejected_handlers.fire%0A%09%09%09list.add%28%20tuple%5B%203%20%5D.fire%20%29%3B%0A%0A%09%09%09//%20deferred.notify%20%3D%20function%28%29%20%7B%20deferred.notifyWith%28...%29%20%7D%0A%09%09%09//%20deferred.resolve%20%3D%20function%28%29%20%7B%20deferred.resolveWith%28...%29%20%7D%0A%09%09%09//%20deferred.reject%20%3D%20function%28%29%20%7B%20deferred.rejectWith%28...%29%20%7D%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%28%20this%20%3D%3D%3D%20deferred%20%3F%20undefined%20%3A%20this%2C%20arguments%20%29%3B%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%3B%0A%0A%09%09%09//%20deferred.notifyWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.resolveWith%20%3D%20list.fireWith%0A%09%09%09//%20deferred.rejectWith%20%3D%20list.fireWith%0A%09%09%09deferred%5B%20tuple%5B%200%20%5D%20%2B%20%22With%22%20%5D%20%3D%20list.fireWith%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Make%20the%20deferred%20a%20promise%0A%09%09promise.promise%28%20deferred%20%29%3B%0A%0A%09%09//%20Call%20given%20func%20if%20any%0A%09%09if%20%28%20func%20%29%20%7B%0A%09%09%09func.call%28%20deferred%2C%20deferred%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20All%20done%21%0A%09%09return%20deferred%3B%0A%09%7D%2C%0A%0A%09//%20Deferred%20helper%0A%09when%3A%20function%28%20singleValue%20%29%20%7B%0A%09%09var%0A%0A%09%09%09//%20count%20of%20uncompleted%20subordinates%0A%09%09%09remaining%20%3D%20arguments.length%2C%0A%0A%09%09%09//%20count%20of%20unprocessed%20arguments%0A%09%09%09i%20%3D%20remaining%2C%0A%0A%09%09%09//%20subordinate%20fulfillment%20data%0A%09%09%09resolveContexts%20%3D%20Array%28%20i%20%29%2C%0A%09%09%09resolveValues%20%3D%20slice.call%28%20arguments%20%29%2C%0A%0A%09%09%09//%20the%20master%20Deferred%0A%09%09%09master%20%3D%20jQuery.Deferred%28%29%2C%0A%0A%09%09%09//%20subordinate%20callback%20factory%0A%09%09%09updateFunc%20%3D%20function%28%20i%20%29%20%7B%0A%09%09%09%09return%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09resolveContexts%5B%20i%20%5D%20%3D%20this%3B%0A%09%09%09%09%09resolveValues%5B%20i%20%5D%20%3D%20arguments.length%20%3E%201%20%3F%20slice.call%28%20arguments%20%29%20%3A%20value%3B%0A%09%09%09%09%09if%20%28%20%21%28%20--remaining%20%29%20%29%20%7B%0A%09%09%09%09%09%09master.resolveWith%28%20resolveContexts%2C%20resolveValues%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20Single-%20and%20empty%20arguments%20are%20adopted%20like%20Promise.resolve%0A%09%09if%20%28%20remaining%20%3C%3D%201%20%29%20%7B%0A%09%09%09adoptValue%28%20singleValue%2C%20master.done%28%20updateFunc%28%20i%20%29%20%29.resolve%2C%20master.reject%2C%0A%09%09%09%09%21remaining%20%29%3B%0A%0A%09%09%09//%20Use%20.then%28%29%20to%20unwrap%20secondary%20thenables%20%28cf.%20gh-3000%29%0A%09%09%09if%20%28%20master.state%28%29%20%3D%3D%3D%20%22pending%22%20%7C%7C%0A%09%09%09%09isFunction%28%20resolveValues%5B%20i%20%5D%20%26%26%20resolveValues%5B%20i%20%5D.then%20%29%20%29%20%7B%0A%0A%09%09%09%09return%20master.then%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Multiple%20arguments%20are%20aggregated%20like%20Promise.all%20array%20elements%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09adoptValue%28%20resolveValues%5B%20i%20%5D%2C%20updateFunc%28%20i%20%29%2C%20master.reject%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20master.promise%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20These%20usually%20indicate%20a%20programmer%20mistake%20during%20development%2C%0A//%20warn%20about%20them%20ASAP%20rather%20than%20swallowing%20them%20by%20default.%0Avar%20rerrorNames%20%3D%20/%5E%28Eval%7CInternal%7CRange%7CReference%7CSyntax%7CType%7CURI%29Error%24/%3B%0A%0AjQuery.Deferred.exceptionHook%20%3D%20function%28%20error%2C%20stack%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%208%20-%209%20only%0A%09//%20Console%20exists%20when%20dev%20tools%20are%20open%2C%20which%20can%20happen%20at%20any%20time%0A%09if%20%28%20window.console%20%26%26%20window.console.warn%20%26%26%20error%20%26%26%20rerrorNames.test%28%20error.name%20%29%20%29%20%7B%0A%09%09window.console.warn%28%20%22jQuery.Deferred%20exception%3A%20%22%20%2B%20error.message%2C%20error.stack%2C%20stack%20%29%3B%0A%09%7D%0A%7D%3B%0A%0A%0A%0A%0AjQuery.readyException%20%3D%20function%28%20error%20%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09throw%20error%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0A//%20The%20deferred%20used%20on%20DOM%20ready%0Avar%20readyList%20%3D%20jQuery.Deferred%28%29%3B%0A%0AjQuery.fn.ready%20%3D%20function%28%20fn%20%29%20%7B%0A%0A%09readyList%0A%09%09.then%28%20fn%20%29%0A%0A%09%09//%20Wrap%20jQuery.readyException%20in%20a%20function%20so%20that%20the%20lookup%0A%09%09//%20happens%20at%20the%20time%20of%20error%20handling%20instead%20of%20callback%0A%09%09//%20registration.%0A%09%09.catch%28%20function%28%20error%20%29%20%7B%0A%09%09%09jQuery.readyException%28%20error%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09return%20this%3B%0A%7D%3B%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Is%20the%20DOM%20ready%20to%20be%20used%3F%20Set%20to%20true%20once%20it%20occurs.%0A%09isReady%3A%20false%2C%0A%0A%09//%20A%20counter%20to%20track%20how%20many%20items%20to%20wait%20for%20before%0A%09//%20the%20ready%20event%20fires.%20See%20%236781%0A%09readyWait%3A%201%2C%0A%0A%09//%20Handle%20when%20the%20DOM%20is%20ready%0A%09ready%3A%20function%28%20wait%20%29%20%7B%0A%0A%09%09//%20Abort%20if%20there%20are%20pending%20holds%20or%20we%27re%20already%20ready%0A%09%09if%20%28%20wait%20%3D%3D%3D%20true%20%3F%20--jQuery.readyWait%20%3A%20jQuery.isReady%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Remember%20that%20the%20DOM%20is%20ready%0A%09%09jQuery.isReady%20%3D%20true%3B%0A%0A%09%09//%20If%20a%20normal%20DOM%20Ready%20event%20fired%2C%20decrement%2C%20and%20wait%20if%20need%20be%0A%09%09if%20%28%20wait%20%21%3D%3D%20true%20%26%26%20--jQuery.readyWait%20%3E%200%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20If%20there%20are%20functions%20bound%2C%20to%20execute%0A%09%09readyList.resolveWith%28%20document%2C%20%5B%20jQuery%20%5D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.ready.then%20%3D%20readyList.then%3B%0A%0A//%20The%20ready%20event%20handler%20and%20self%20cleanup%20method%0Afunction%20completed%28%29%20%7B%0A%09document.removeEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%09window.removeEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%09jQuery.ready%28%29%3B%0A%7D%0A%0A//%20Catch%20cases%20where%20%24%28document%29.ready%28%29%20is%20called%0A//%20after%20the%20browser%20event%20has%20already%20occurred.%0A//%20Support%3A%20IE%20%3C%3D9%20-%2010%20only%0A//%20Older%20IE%20sometimes%20signals%20%22interactive%22%20too%20soon%0Aif%20%28%20document.readyState%20%3D%3D%3D%20%22complete%22%20%7C%7C%0A%09%28%20document.readyState%20%21%3D%3D%20%22loading%22%20%26%26%20%21document.documentElement.doScroll%20%29%20%29%20%7B%0A%0A%09//%20Handle%20it%20asynchronously%20to%20allow%20scripts%20the%20opportunity%20to%20delay%20ready%0A%09window.setTimeout%28%20jQuery.ready%20%29%3B%0A%0A%7D%20else%20%7B%0A%0A%09//%20Use%20the%20handy%20event%20callback%0A%09document.addEventListener%28%20%22DOMContentLoaded%22%2C%20completed%20%29%3B%0A%0A%09//%20A%20fallback%20to%20window.onload%2C%20that%20will%20always%20work%0A%09window.addEventListener%28%20%22load%22%2C%20completed%20%29%3B%0A%7D%0A%0A%0A%0A%0A//%20Multifunctional%20method%20to%20get%20and%20set%20values%20of%20a%20collection%0A//%20The%20value/s%20can%20optionally%20be%20executed%20if%20it%27s%20a%20function%0Avar%20access%20%3D%20function%28%20elems%2C%20fn%2C%20key%2C%20value%2C%20chainable%2C%20emptyGet%2C%20raw%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09len%20%3D%20elems.length%2C%0A%09%09bulk%20%3D%20key%20%3D%3D%20null%3B%0A%0A%09//%20Sets%20many%20values%0A%09if%20%28%20toType%28%20key%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%09%09for%20%28%20i%20in%20key%20%29%20%7B%0A%09%09%09access%28%20elems%2C%20fn%2C%20i%2C%20key%5B%20i%20%5D%2C%20true%2C%20emptyGet%2C%20raw%20%29%3B%0A%09%09%7D%0A%0A%09//%20Sets%20one%20value%0A%09%7D%20else%20if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09chainable%20%3D%20true%3B%0A%0A%09%09if%20%28%20%21isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09raw%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20bulk%20%29%20%7B%0A%0A%09%09%09//%20Bulk%20operations%20run%20against%20the%20entire%20set%0A%09%09%09if%20%28%20raw%20%29%20%7B%0A%09%09%09%09fn.call%28%20elems%2C%20value%20%29%3B%0A%09%09%09%09fn%20%3D%20null%3B%0A%0A%09%09%09//%20...except%20when%20executing%20function%20values%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09bulk%20%3D%20fn%3B%0A%09%09%09%09fn%20%3D%20function%28%20elem%2C%20_key%2C%20value%20%29%20%7B%0A%09%09%09%09%09return%20bulk.call%28%20jQuery%28%20elem%20%29%2C%20value%20%29%3B%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fn%28%0A%09%09%09%09%09elems%5B%20i%20%5D%2C%20key%2C%20raw%20%3F%0A%09%09%09%09%09value%20%3A%0A%09%09%09%09%09value.call%28%20elems%5B%20i%20%5D%2C%20i%2C%20fn%28%20elems%5B%20i%20%5D%2C%20key%20%29%20%29%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20chainable%20%29%20%7B%0A%09%09return%20elems%3B%0A%09%7D%0A%0A%09//%20Gets%0A%09if%20%28%20bulk%20%29%20%7B%0A%09%09return%20fn.call%28%20elems%20%29%3B%0A%09%7D%0A%0A%09return%20len%20%3F%20fn%28%20elems%5B%200%20%5D%2C%20key%20%29%20%3A%20emptyGet%3B%0A%7D%3B%0A%0A%0A//%20Matches%20dashed%20string%20for%20camelizing%0Avar%20rmsPrefix%20%3D%20/%5E-ms-/%2C%0A%09rdashAlpha%20%3D%20/-%28%5Ba-z%5D%29/g%3B%0A%0A//%20Used%20by%20camelCase%20as%20callback%20to%20replace%28%29%0Afunction%20fcamelCase%28%20_all%2C%20letter%20%29%20%7B%0A%09return%20letter.toUpperCase%28%29%3B%0A%7D%0A%0A//%20Convert%20dashed%20to%20camelCase%3B%20used%20by%20the%20css%20and%20data%20modules%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A//%20Microsoft%20forgot%20to%20hump%20their%20vendor%20prefix%20%28%239572%29%0Afunction%20camelCase%28%20string%20%29%20%7B%0A%09return%20string.replace%28%20rmsPrefix%2C%20%22ms-%22%20%29.replace%28%20rdashAlpha%2C%20fcamelCase%20%29%3B%0A%7D%0Avar%20acceptData%20%3D%20function%28%20owner%20%29%20%7B%0A%0A%09//%20Accepts%20only%3A%0A%09//%20%20-%20Node%0A%09//%20%20%20%20-%20Node.ELEMENT_NODE%0A%09//%20%20%20%20-%20Node.DOCUMENT_NODE%0A%09//%20%20-%20Object%0A%09//%20%20%20%20-%20Any%0A%09return%20owner.nodeType%20%3D%3D%3D%201%20%7C%7C%20owner.nodeType%20%3D%3D%3D%209%20%7C%7C%20%21%28%20%2Bowner.nodeType%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0Afunction%20Data%28%29%20%7B%0A%09this.expando%20%3D%20jQuery.expando%20%2B%20Data.uid%2B%2B%3B%0A%7D%0A%0AData.uid%20%3D%201%3B%0A%0AData.prototype%20%3D%20%7B%0A%0A%09cache%3A%20function%28%20owner%20%29%20%7B%0A%0A%09%09//%20Check%20if%20the%20owner%20object%20already%20has%20a%20cache%0A%09%09var%20value%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09//%20If%20not%2C%20create%20one%0A%09%09if%20%28%20%21value%20%29%20%7B%0A%09%09%09value%20%3D%20%7B%7D%3B%0A%0A%09%09%09//%20We%20can%20accept%20data%20for%20non-element%20nodes%20in%20modern%20browsers%2C%0A%09%09%09//%20but%20we%20should%20not%2C%20see%20%238335.%0A%09%09%09//%20Always%20return%20an%20empty%20object.%0A%09%09%09if%20%28%20acceptData%28%20owner%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20it%20is%20a%20node%20unlikely%20to%20be%20stringify-ed%20or%20looped%20over%0A%09%09%09%09//%20use%20plain%20assignment%0A%09%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20value%3B%0A%0A%09%09%09%09//%20Otherwise%20secure%20it%20in%20a%20non-enumerable%20property%0A%09%09%09%09//%20configurable%20must%20be%20true%20to%20allow%20the%20property%20to%20be%0A%09%09%09%09//%20deleted%20when%20data%20is%20removed%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09Object.defineProperty%28%20owner%2C%20this.expando%2C%20%7B%0A%09%09%09%09%09%09value%3A%20value%2C%0A%09%09%09%09%09%09configurable%3A%20true%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20value%3B%0A%09%7D%2C%0A%09set%3A%20function%28%20owner%2C%20data%2C%20value%20%29%20%7B%0A%09%09var%20prop%2C%0A%09%09%09cache%20%3D%20this.cache%28%20owner%20%29%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20key%2C%20value%20%5D%20args%0A%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09cache%5B%20camelCase%28%20data%20%29%20%5D%20%3D%20value%3B%0A%0A%09%09//%20Handle%3A%20%5B%20owner%2C%20%7B%20properties%20%7D%20%5D%20args%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20Copy%20the%20properties%20one-by-one%20to%20the%20cache%20object%0A%09%09%09for%20%28%20prop%20in%20data%20%29%20%7B%0A%09%09%09%09cache%5B%20camelCase%28%20prop%20%29%20%5D%20%3D%20data%5B%20prop%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09return%20cache%3B%0A%09%7D%2C%0A%09get%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09return%20key%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this.cache%28%20owner%20%29%20%3A%0A%0A%09%09%09//%20Always%20use%20camelCase%20key%20%28gh-2257%29%0A%09%09%09owner%5B%20this.expando%20%5D%20%26%26%20owner%5B%20this.expando%20%5D%5B%20camelCase%28%20key%20%29%20%5D%3B%0A%09%7D%2C%0A%09access%3A%20function%28%20owner%2C%20key%2C%20value%20%29%20%7B%0A%0A%09%09//%20In%20cases%20where%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20No%20key%20was%20specified%0A%09%09//%20%20%202.%20A%20string%20key%20was%20specified%2C%20but%20no%20value%20provided%0A%09%09//%0A%09%09//%20Take%20the%20%22read%22%20path%20and%20allow%20the%20get%20method%20to%20determine%0A%09%09//%20which%20value%20to%20return%2C%20respectively%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20The%20entire%20cache%20object%0A%09%09//%20%20%202.%20The%20data%20stored%20at%20the%20key%0A%09%09//%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%0A%09%09%09%09%28%20%28%20key%20%26%26%20typeof%20key%20%3D%3D%3D%20%22string%22%20%29%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%29%20%7B%0A%0A%09%09%09return%20this.get%28%20owner%2C%20key%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20When%20the%20key%20is%20not%20a%20string%2C%20or%20both%20a%20key%20and%20value%0A%09%09//%20are%20specified%2C%20set%20or%20extend%20%28existing%20objects%29%20with%20either%3A%0A%09%09//%0A%09%09//%20%20%201.%20An%20object%20of%20properties%0A%09%09//%20%20%202.%20A%20key%20and%20value%0A%09%09//%0A%09%09this.set%28%20owner%2C%20key%2C%20value%20%29%3B%0A%0A%09%09//%20Since%20the%20%22set%22%20path%20can%20have%20two%20possible%20entry%20points%0A%09%09//%20return%20the%20expected%20data%20based%20on%20which%20path%20was%20taken%5B%2A%5D%0A%09%09return%20value%20%21%3D%3D%20undefined%20%3F%20value%20%3A%20key%3B%0A%09%7D%2C%0A%09remove%3A%20function%28%20owner%2C%20key%20%29%20%7B%0A%09%09var%20i%2C%0A%09%09%09cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%0A%09%09if%20%28%20cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20key%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09//%20Support%20array%20or%20space%20separated%20string%20of%20keys%0A%09%09%09if%20%28%20Array.isArray%28%20key%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20key%20is%20an%20array%20of%20keys...%0A%09%09%09%09//%20We%20always%20set%20camelCase%20keys%2C%20so%20remove%20that.%0A%09%09%09%09key%20%3D%20key.map%28%20camelCase%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09key%20%3D%20camelCase%28%20key%20%29%3B%0A%0A%09%09%09%09//%20If%20a%20key%20with%20the%20spaces%20exists%2C%20use%20it.%0A%09%09%09%09//%20Otherwise%2C%20create%20an%20array%20by%20matching%20non-whitespace%0A%09%09%09%09key%20%3D%20key%20in%20cache%20%3F%0A%09%09%09%09%09%5B%20key%20%5D%20%3A%0A%09%09%09%09%09%28%20key.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09i%20%3D%20key.length%3B%0A%0A%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09delete%20cache%5B%20key%5B%20i%20%5D%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20the%20expando%20if%20there%27s%20no%20more%20data%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%7C%7C%20jQuery.isEmptyObject%28%20cache%20%29%20%29%20%7B%0A%0A%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%0A%09%09%09//%20Webkit%20%26%20Blink%20performance%20suffers%20when%20deleting%20properties%0A%09%09%09//%20from%20DOM%20nodes%2C%20so%20set%20to%20undefined%20instead%0A%09%09%09//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D378607%20%28bug%20restricted%29%0A%09%09%09if%20%28%20owner.nodeType%20%29%20%7B%0A%09%09%09%09owner%5B%20this.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09delete%20owner%5B%20this.expando%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09hasData%3A%20function%28%20owner%20%29%20%7B%0A%09%09var%20cache%20%3D%20owner%5B%20this.expando%20%5D%3B%0A%09%09return%20cache%20%21%3D%3D%20undefined%20%26%26%20%21jQuery.isEmptyObject%28%20cache%20%29%3B%0A%09%7D%0A%7D%3B%0Avar%20dataPriv%20%3D%20new%20Data%28%29%3B%0A%0Avar%20dataUser%20%3D%20new%20Data%28%29%3B%0A%0A%0A%0A//%09Implementation%20Summary%0A//%0A//%091.%20Enforce%20API%20surface%20and%20semantic%20compatibility%20with%201.9.x%20branch%0A//%092.%20Improve%20the%20module%27s%20maintainability%20by%20reducing%20the%20storage%0A//%09%09paths%20to%20a%20single%20mechanism.%0A//%093.%20Use%20the%20same%20single%20mechanism%20to%20support%20%22private%22%20and%20%22user%22%20data.%0A//%094.%20_Never_%20expose%20%22private%22%20data%20to%20user%20code%20%28TODO%3A%20Drop%20_data%2C%20_removeData%29%0A//%095.%20Avoid%20exposing%20implementation%20details%20on%20user%20objects%20%28eg.%20expando%20properties%29%0A//%096.%20Provide%20a%20clear%20path%20for%20implementation%20upgrade%20to%20WeakMap%20in%202014%0A%0Avar%20rbrace%20%3D%20/%5E%28%3F%3A%5C%7B%5B%5Cw%5CW%5D%2A%5C%7D%7C%5C%5B%5B%5Cw%5CW%5D%2A%5C%5D%29%24/%2C%0A%09rmultiDash%20%3D%20/%5BA-Z%5D/g%3B%0A%0Afunction%20getData%28%20data%20%29%20%7B%0A%09if%20%28%20data%20%3D%3D%3D%20%22true%22%20%29%20%7B%0A%09%09return%20true%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22false%22%20%29%20%7B%0A%09%09return%20false%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%3D%20%22null%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Only%20convert%20to%20a%20number%20if%20it%20doesn%27t%20change%20the%20string%0A%09if%20%28%20data%20%3D%3D%3D%20%2Bdata%20%2B%20%22%22%20%29%20%7B%0A%09%09return%20%2Bdata%3B%0A%09%7D%0A%0A%09if%20%28%20rbrace.test%28%20data%20%29%20%29%20%7B%0A%09%09return%20JSON.parse%28%20data%20%29%3B%0A%09%7D%0A%0A%09return%20data%3B%0A%7D%0A%0Afunction%20dataAttr%28%20elem%2C%20key%2C%20data%20%29%20%7B%0A%09var%20name%3B%0A%0A%09//%20If%20nothing%20was%20found%20internally%2C%20try%20to%20fetch%20any%0A%09//%20data%20from%20the%20HTML5%20data-%2A%20attribute%0A%09if%20%28%20data%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09name%20%3D%20%22data-%22%20%2B%20key.replace%28%20rmultiDash%2C%20%22-%24%26%22%20%29.toLowerCase%28%29%3B%0A%09%09data%20%3D%20elem.getAttribute%28%20name%20%29%3B%0A%0A%09%09if%20%28%20typeof%20data%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09data%20%3D%20getData%28%20data%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%0A%09%09%09//%20Make%20sure%20we%20set%20the%20data%20so%20it%20isn%27t%20changed%20later%0A%09%09%09dataUser.set%28%20elem%2C%20key%2C%20data%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09return%20data%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09hasData%3A%20function%28%20elem%20%29%20%7B%0A%09%09return%20dataUser.hasData%28%20elem%20%29%20%7C%7C%20dataPriv.hasData%28%20elem%20%29%3B%0A%09%7D%2C%0A%0A%09data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataUser.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataUser.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%2C%0A%0A%09//%20TODO%3A%20Now%20that%20all%20calls%20to%20_data%20and%20_removeData%20have%20been%20replaced%0A%09//%20with%20direct%20calls%20to%20dataPriv%20methods%2C%20these%20can%20be%20deprecated.%0A%09_data%3A%20function%28%20elem%2C%20name%2C%20data%20%29%20%7B%0A%09%09return%20dataPriv.access%28%20elem%2C%20name%2C%20data%20%29%3B%0A%09%7D%2C%0A%0A%09_removeData%3A%20function%28%20elem%2C%20name%20%29%20%7B%0A%09%09dataPriv.remove%28%20elem%2C%20name%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09data%3A%20function%28%20key%2C%20value%20%29%20%7B%0A%09%09var%20i%2C%20name%2C%20data%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09attrs%20%3D%20elem%20%26%26%20elem.attributes%3B%0A%0A%09%09//%20Gets%20all%20values%0A%09%09if%20%28%20key%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20this.length%20%29%20%7B%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%20%29%3B%0A%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%21dataPriv.get%28%20elem%2C%20%22hasDataAttrs%22%20%29%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20attrs.length%3B%0A%09%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09%09%09%09//%20The%20attrs%20elements%20can%20be%20null%20%28%2314894%29%0A%09%09%09%09%09%09if%20%28%20attrs%5B%20i%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09name%20%3D%20attrs%5B%20i%20%5D.name%3B%0A%09%09%09%09%09%09%09if%20%28%20name.indexOf%28%20%22data-%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09%09%09%09%09name%20%3D%20camelCase%28%20name.slice%28%205%20%29%20%29%3B%0A%09%09%09%09%09%09%09%09dataAttr%28%20elem%2C%20name%2C%20data%5B%20name%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09dataPriv.set%28%20elem%2C%20%22hasDataAttrs%22%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09return%20data%3B%0A%09%09%7D%0A%0A%09%09//%20Sets%20multiple%20values%0A%09%09if%20%28%20typeof%20key%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09%09dataUser.set%28%20this%2C%20key%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20data%3B%0A%0A%09%09%09//%20The%20calling%20jQuery%20object%20%28element%20matches%29%20is%20not%20empty%0A%09%09%09//%20%28and%20therefore%20has%20an%20element%20appears%20at%20this%5B%200%20%5D%29%20and%20the%0A%09%09%09//%20%60value%60%20parameter%20was%20not%20undefined.%20An%20empty%20jQuery%20object%0A%09%09%09//%20will%20result%20in%20%60undefined%60%20for%20elem%20%3D%20this%5B%200%20%5D%20which%20will%0A%09%09%09//%20throw%20an%20exception%20if%20an%20attempt%20to%20read%20a%20data%20cache%20is%20made.%0A%09%09%09if%20%28%20elem%20%26%26%20value%20%3D%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09//%20Attempt%20to%20get%20data%20from%20the%20cache%0A%09%09%09%09//%20The%20key%20will%20always%20be%20camelCased%20in%20Data%0A%09%09%09%09data%20%3D%20dataUser.get%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Attempt%20to%20%22discover%22%20the%20data%20in%0A%09%09%09%09//%20HTML5%20custom%20data-%2A%20attrs%0A%09%09%09%09data%20%3D%20dataAttr%28%20elem%2C%20key%20%29%3B%0A%09%09%09%09if%20%28%20data%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09return%20data%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20We%20tried%20really%20hard%2C%20but%20the%20data%20doesn%27t%20exist.%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20the%20data...%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%0A%09%09%09%09//%20We%20always%20store%20the%20camelCased%20key%0A%09%09%09%09dataUser.set%28%20this%2C%20key%2C%20value%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%3E%201%2C%20null%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09removeData%3A%20function%28%20key%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09dataUser.remove%28%20this%2C%20key%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.extend%28%20%7B%0A%09queue%3A%20function%28%20elem%2C%20type%2C%20data%20%29%20%7B%0A%09%09var%20queue%3B%0A%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09type%20%3D%20%28%20type%20%7C%7C%20%22fx%22%20%29%20%2B%20%22queue%22%3B%0A%09%09%09queue%20%3D%20dataPriv.get%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09//%20Speed%20up%20dequeue%20by%20getting%20out%20quickly%20if%20this%20is%20just%20a%20lookup%0A%09%09%09if%20%28%20data%20%29%20%7B%0A%09%09%09%09if%20%28%20%21queue%20%7C%7C%20Array.isArray%28%20data%20%29%20%29%20%7B%0A%09%09%09%09%09queue%20%3D%20dataPriv.access%28%20elem%2C%20type%2C%20jQuery.makeArray%28%20data%20%29%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09queue.push%28%20data%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20queue%20%7C%7C%20%5B%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dequeue%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09var%20queue%20%3D%20jQuery.queue%28%20elem%2C%20type%20%29%2C%0A%09%09%09startLength%20%3D%20queue.length%2C%0A%09%09%09fn%20%3D%20queue.shift%28%29%2C%0A%09%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20type%20%29%2C%0A%09%09%09next%20%3D%20function%28%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20elem%2C%20type%20%29%3B%0A%09%09%09%7D%3B%0A%0A%09%09//%20If%20the%20fx%20queue%20is%20dequeued%2C%20always%20remove%20the%20progress%20sentinel%0A%09%09if%20%28%20fn%20%3D%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09fn%20%3D%20queue.shift%28%29%3B%0A%09%09%09startLength--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20fn%20%29%20%7B%0A%0A%09%09%09//%20Add%20a%20progress%20sentinel%20to%20prevent%20the%20fx%20queue%20from%20being%0A%09%09%09//%20automatically%20dequeued%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%29%20%7B%0A%09%09%09%09queue.unshift%28%20%22inprogress%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Clear%20up%20the%20last%20queue%20stop%20function%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09fn.call%28%20elem%2C%20next%2C%20hooks%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21startLength%20%26%26%20hooks%20%29%20%7B%0A%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Not%20public%20-%20generate%20a%20queueHooks%20object%2C%20or%20return%20the%20current%20one%0A%09_queueHooks%3A%20function%28%20elem%2C%20type%20%29%20%7B%0A%09%09var%20key%20%3D%20type%20%2B%20%22queueHooks%22%3B%0A%09%09return%20dataPriv.get%28%20elem%2C%20key%20%29%20%7C%7C%20dataPriv.access%28%20elem%2C%20key%2C%20%7B%0A%09%09%09empty%3A%20jQuery.Callbacks%28%20%22once%20memory%22%20%29.add%28%20function%28%29%20%7B%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%5B%20type%20%2B%20%22queue%22%2C%20key%20%5D%20%29%3B%0A%09%09%09%7D%20%29%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09queue%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20setter%20%3D%202%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09data%20%3D%20type%3B%0A%09%09%09type%20%3D%20%22fx%22%3B%0A%09%09%09setter--%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20arguments.length%20%3C%20setter%20%29%20%7B%0A%09%09%09return%20jQuery.queue%28%20this%5B%200%20%5D%2C%20type%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20data%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09this%20%3A%0A%09%09%09this.each%28%20function%28%29%20%7B%0A%09%09%09%09var%20queue%20%3D%20jQuery.queue%28%20this%2C%20type%2C%20data%20%29%3B%0A%0A%09%09%09%09//%20Ensure%20a%20hooks%20for%20this%20queue%0A%09%09%09%09jQuery._queueHooks%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22fx%22%20%26%26%20queue%5B%200%20%5D%20%21%3D%3D%20%22inprogress%22%20%29%20%7B%0A%09%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09dequeue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09clearQueue%3A%20function%28%20type%20%29%20%7B%0A%09%09return%20this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%7D%2C%0A%0A%09//%20Get%20a%20promise%20resolved%20when%20queues%20of%20a%20certain%20type%0A%09//%20are%20emptied%20%28fx%20is%20the%20type%20by%20default%29%0A%09promise%3A%20function%28%20type%2C%20obj%20%29%20%7B%0A%09%09var%20tmp%2C%0A%09%09%09count%20%3D%201%2C%0A%09%09%09defer%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09elements%20%3D%20this%2C%0A%09%09%09i%20%3D%20this.length%2C%0A%09%09%09resolve%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20--count%20%29%20%29%20%7B%0A%09%09%09%09%09defer.resolveWith%28%20elements%2C%20%5B%20elements%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09obj%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09tmp%20%3D%20dataPriv.get%28%20elements%5B%20i%20%5D%2C%20type%20%2B%20%22queueHooks%22%20%29%3B%0A%09%09%09if%20%28%20tmp%20%26%26%20tmp.empty%20%29%20%7B%0A%09%09%09%09count%2B%2B%3B%0A%09%09%09%09tmp.empty.add%28%20resolve%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09resolve%28%29%3B%0A%09%09return%20defer.promise%28%20obj%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20pnum%20%3D%20%28%20/%5B%2B-%5D%3F%28%3F%3A%5Cd%2A%5C.%7C%29%5Cd%2B%28%3F%3A%5BeE%5D%5B%2B-%5D%3F%5Cd%2B%7C%29/%20%29.source%3B%0A%0Avar%20rcssNum%20%3D%20new%20RegExp%28%20%22%5E%28%3F%3A%28%5B%2B-%5D%29%3D%7C%29%28%22%20%2B%20pnum%20%2B%20%22%29%28%5Ba-z%25%5D%2A%29%24%22%2C%20%22i%22%20%29%3B%0A%0A%0Avar%20cssExpand%20%3D%20%5B%20%22Top%22%2C%20%22Right%22%2C%20%22Bottom%22%2C%20%22Left%22%20%5D%3B%0A%0Avar%20documentElement%20%3D%20document.documentElement%3B%0A%0A%0A%0A%09var%20isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%3B%0A%09%09%7D%2C%0A%09%09composed%20%3D%20%7B%20composed%3A%20true%20%7D%3B%0A%0A%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2012%20-%2018%2B%2C%20iOS%2010.0%20-%2010.2%20only%0A%09//%20Check%20attachment%20across%20shadow%20DOM%20boundaries%20when%20possible%20%28gh-3504%29%0A%09//%20Support%3A%20iOS%2010.0-10.2%20only%0A%09//%20Early%20iOS%2010%20versions%20support%20%60attachShadow%60%20but%20not%20%60getRootNode%60%2C%0A%09//%20leading%20to%20errors.%20We%20need%20to%20check%20for%20%60getRootNode%60.%0A%09if%20%28%20documentElement.getRootNode%20%29%20%7B%0A%09%09isAttached%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.contains%28%20elem.ownerDocument%2C%20elem%20%29%20%7C%7C%0A%09%09%09%09elem.getRootNode%28%20composed%20%29%20%3D%3D%3D%20elem.ownerDocument%3B%0A%09%09%7D%3B%0A%09%7D%0Avar%20isHiddenWithinTree%20%3D%20function%28%20elem%2C%20el%20%29%20%7B%0A%0A%09%09//%20isHiddenWithinTree%20might%20be%20called%20from%20jQuery%23filter%20function%3B%0A%09%09//%20in%20that%20case%2C%20element%20will%20be%20second%20argument%0A%09%09elem%20%3D%20el%20%7C%7C%20elem%3B%0A%0A%09%09//%20Inline%20style%20trumps%20all%0A%09%09return%20elem.style.display%20%3D%3D%3D%20%22none%22%20%7C%7C%0A%09%09%09elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%0A%0A%09%09%09//%20Otherwise%2C%20check%20computed%20style%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D43%20-%2045%0A%09%09%09//%20Disconnected%20elements%20can%20have%20computed%20display%3A%20none%2C%20so%20first%20confirm%20that%20elem%20is%0A%09%09%09//%20in%20the%20document.%0A%09%09%09isAttached%28%20elem%20%29%20%26%26%0A%0A%09%09%09jQuery.css%28%20elem%2C%20%22display%22%20%29%20%3D%3D%3D%20%22none%22%3B%0A%09%7D%3B%0A%0A%0A%0Afunction%20adjustCSS%28%20elem%2C%20prop%2C%20valueParts%2C%20tween%20%29%20%7B%0A%09var%20adjusted%2C%20scale%2C%0A%09%09maxIterations%20%3D%2020%2C%0A%09%09currentValue%20%3D%20tween%20%3F%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20tween.cur%28%29%3B%0A%09%09%09%7D%20%3A%0A%09%09%09function%28%29%20%7B%0A%09%09%09%09return%20jQuery.css%28%20elem%2C%20prop%2C%20%22%22%20%29%3B%0A%09%09%09%7D%2C%0A%09%09initial%20%3D%20currentValue%28%29%2C%0A%09%09unit%20%3D%20valueParts%20%26%26%20valueParts%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%2C%0A%0A%09%09//%20Starting%20value%20computation%20is%20required%20for%20potential%20unit%20mismatches%0A%09%09initialInUnit%20%3D%20elem.nodeType%20%26%26%0A%09%09%09%28%20jQuery.cssNumber%5B%20prop%20%5D%20%7C%7C%20unit%20%21%3D%3D%20%22px%22%20%26%26%20%2Binitial%20%29%20%26%26%0A%09%09%09rcssNum.exec%28%20jQuery.css%28%20elem%2C%20prop%20%29%20%29%3B%0A%0A%09if%20%28%20initialInUnit%20%26%26%20initialInUnit%5B%203%20%5D%20%21%3D%3D%20unit%20%29%20%7B%0A%0A%09%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09%09//%20Halve%20the%20iteration%20target%20value%20to%20prevent%20interference%20from%20CSS%20upper%20bounds%20%28gh-2144%29%0A%09%09initial%20%3D%20initial%20/%202%3B%0A%0A%09%09//%20Trust%20units%20reported%20by%20jQuery.css%0A%09%09unit%20%3D%20unit%20%7C%7C%20initialInUnit%5B%203%20%5D%3B%0A%0A%09%09//%20Iteratively%20approximate%20from%20a%20nonzero%20starting%20point%0A%09%09initialInUnit%20%3D%20%2Binitial%20%7C%7C%201%3B%0A%0A%09%09while%20%28%20maxIterations--%20%29%20%7B%0A%0A%09%09%09//%20Evaluate%20and%20update%20our%20best%20guess%20%28doubling%20guesses%20that%20zero%20out%29.%0A%09%09%09//%20Finish%20if%20the%20scale%20equals%20or%20crosses%201%20%28making%20the%20old%2Anew%20product%20non-positive%29.%0A%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%09%09%09if%20%28%20%28%201%20-%20scale%20%29%20%2A%20%28%201%20-%20%28%20scale%20%3D%20currentValue%28%29%20/%20initial%20%7C%7C%200.5%20%29%20%29%20%3C%3D%200%20%29%20%7B%0A%09%09%09%09maxIterations%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09initialInUnit%20%3D%20initialInUnit%20/%20scale%3B%0A%0A%09%09%7D%0A%0A%09%09initialInUnit%20%3D%20initialInUnit%20%2A%202%3B%0A%09%09jQuery.style%28%20elem%2C%20prop%2C%20initialInUnit%20%2B%20unit%20%29%3B%0A%0A%09%09//%20Make%20sure%20we%20update%20the%20tween%20properties%20later%20on%0A%09%09valueParts%20%3D%20valueParts%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20valueParts%20%29%20%7B%0A%09%09initialInUnit%20%3D%20%2BinitialInUnit%20%7C%7C%20%2Binitial%20%7C%7C%200%3B%0A%0A%09%09//%20Apply%20relative%20offset%20%28%2B%3D/-%3D%29%20if%20specified%0A%09%09adjusted%20%3D%20valueParts%5B%201%20%5D%20%3F%0A%09%09%09initialInUnit%20%2B%20%28%20valueParts%5B%201%20%5D%20%2B%201%20%29%20%2A%20valueParts%5B%202%20%5D%20%3A%0A%09%09%09%2BvalueParts%5B%202%20%5D%3B%0A%09%09if%20%28%20tween%20%29%20%7B%0A%09%09%09tween.unit%20%3D%20unit%3B%0A%09%09%09tween.start%20%3D%20initialInUnit%3B%0A%09%09%09tween.end%20%3D%20adjusted%3B%0A%09%09%7D%0A%09%7D%0A%09return%20adjusted%3B%0A%7D%0A%0A%0Avar%20defaultDisplayMap%20%3D%20%7B%7D%3B%0A%0Afunction%20getDefaultDisplay%28%20elem%20%29%20%7B%0A%09var%20temp%2C%0A%09%09doc%20%3D%20elem.ownerDocument%2C%0A%09%09nodeName%20%3D%20elem.nodeName%2C%0A%09%09display%20%3D%20defaultDisplayMap%5B%20nodeName%20%5D%3B%0A%0A%09if%20%28%20display%20%29%20%7B%0A%09%09return%20display%3B%0A%09%7D%0A%0A%09temp%20%3D%20doc.body.appendChild%28%20doc.createElement%28%20nodeName%20%29%20%29%3B%0A%09display%20%3D%20jQuery.css%28%20temp%2C%20%22display%22%20%29%3B%0A%0A%09temp.parentNode.removeChild%28%20temp%20%29%3B%0A%0A%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09display%20%3D%20%22block%22%3B%0A%09%7D%0A%09defaultDisplayMap%5B%20nodeName%20%5D%20%3D%20display%3B%0A%0A%09return%20display%3B%0A%7D%0A%0Afunction%20showHide%28%20elements%2C%20show%20%29%20%7B%0A%09var%20display%2C%20elem%2C%0A%09%09values%20%3D%20%5B%5D%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20elements.length%3B%0A%0A%09//%20Determine%20new%20display%20value%20for%20elements%20that%20need%20to%20change%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elements%5B%20index%20%5D%3B%0A%09%09if%20%28%20%21elem.style%20%29%20%7B%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09display%20%3D%20elem.style.display%3B%0A%09%09if%20%28%20show%20%29%20%7B%0A%0A%09%09%09//%20Since%20we%20force%20visibility%20upon%20cascade-hidden%20elements%2C%20an%20immediate%20%28and%20slow%29%0A%09%09%09//%20check%20is%20required%20in%20this%20first%20loop%20unless%20we%20have%20a%20nonempty%20display%20value%20%28either%0A%09%09%09//%20inline%20or%20about-to-be-restored%29%0A%09%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%20%7C%7C%20null%3B%0A%09%09%09%09if%20%28%20%21values%5B%20index%20%5D%20%29%20%7B%0A%09%09%09%09%09elem.style.display%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%20%28%20elem.style.display%20%3D%3D%3D%20%22%22%20%26%26%20isHiddenWithinTree%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20getDefaultDisplay%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20display%20%21%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09%09values%5B%20index%20%5D%20%3D%20%22none%22%3B%0A%0A%09%09%09%09//%20Remember%20what%20we%27re%20overwriting%0A%09%09%09%09dataPriv.set%28%20elem%2C%20%22display%22%2C%20display%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Set%20the%20display%20of%20the%20elements%20in%20a%20second%20loop%20to%20avoid%20constant%20reflow%0A%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20values%5B%20index%20%5D%20%21%3D%20null%20%29%20%7B%0A%09%09%09elements%5B%20index%20%5D.style.display%20%3D%20values%5B%20index%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elements%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09show%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%2C%20true%20%29%3B%0A%09%7D%2C%0A%09hide%3A%20function%28%29%20%7B%0A%09%09return%20showHide%28%20this%20%29%3B%0A%09%7D%2C%0A%09toggle%3A%20function%28%20state%20%29%20%7B%0A%09%09if%20%28%20typeof%20state%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09return%20state%20%3F%20this.show%28%29%20%3A%20this.hide%28%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09if%20%28%20isHiddenWithinTree%28%20this%20%29%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.show%28%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.hide%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0Avar%20rcheckableType%20%3D%20%28%20/%5E%28%3F%3Acheckbox%7Cradio%29%24/i%20%29%3B%0A%0Avar%20rtagName%20%3D%20%28%20/%3C%28%5Ba-z%5D%5B%5E%5C/%5C0%3E%5Cx20%5Ct%5Cr%5Cn%5Cf%5D%2A%29/i%20%29%3B%0A%0Avar%20rscriptType%20%3D%20%28%20/%5E%24%7C%5Emodule%24%7C%5C/%28%3F%3Ajava%7Cecma%29script/i%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20fragment%20%3D%20document.createDocumentFragment%28%29%2C%0A%09%09div%20%3D%20fragment.appendChild%28%20document.createElement%28%20%22div%22%20%29%20%29%2C%0A%09%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%0A%09//%20Support%3A%20Android%204.0%20-%204.3%20only%0A%09//%20Check%20state%20lost%20if%20the%20name%20is%20set%20%28%2311217%29%0A%09//%20Support%3A%20Windows%20Web%20Apps%20%28WWA%29%0A%09//%20%60name%60%20and%20%60type%60%20must%20use%20.setAttribute%20for%20WWA%20%28%2314901%29%0A%09input.setAttribute%28%20%22type%22%2C%20%22radio%22%20%29%3B%0A%09input.setAttribute%28%20%22checked%22%2C%20%22checked%22%20%29%3B%0A%09input.setAttribute%28%20%22name%22%2C%20%22t%22%20%29%3B%0A%0A%09div.appendChild%28%20input%20%29%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.1%20only%0A%09//%20Older%20WebKit%20doesn%27t%20clone%20checked%20state%20correctly%20in%20fragments%0A%09support.checkClone%20%3D%20div.cloneNode%28%20true%20%29.cloneNode%28%20true%20%29.lastChild.checked%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Make%20sure%20textarea%20%28and%20checkbox%29%20defaultValue%20is%20properly%20cloned%0A%09div.innerHTML%20%3D%20%22%3Ctextarea%3Ex%3C/textarea%3E%22%3B%0A%09support.noCloneChecked%20%3D%20%21%21div.cloneNode%28%20true%20%29.lastChild.defaultValue%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09//%20IE%20%3C%3D9%20replaces%20%3Coption%3E%20tags%20with%20their%20contents%20when%20inserted%20outside%20of%0A%09//%20the%20select%20element.%0A%09div.innerHTML%20%3D%20%22%3Coption%3E%3C/option%3E%22%3B%0A%09support.option%20%3D%20%21%21div.lastChild%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20We%20have%20to%20close%20these%20tags%20to%20support%20XHTML%20%28%2313200%29%0Avar%20wrapMap%20%3D%20%7B%0A%0A%09//%20XHTML%20parsers%20do%20not%20magically%20insert%20elements%20in%20the%0A%09//%20same%20way%20that%20tag%20soup%20parsers%20do.%20So%20we%20cannot%20shorten%0A%09//%20this%20by%20omitting%20%3Ctbody%3E%20or%20other%20required%20elements.%0A%09thead%3A%20%5B%201%2C%20%22%3Ctable%3E%22%2C%20%22%3C/table%3E%22%20%5D%2C%0A%09col%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ccolgroup%3E%22%2C%20%22%3C/colgroup%3E%3C/table%3E%22%20%5D%2C%0A%09tr%3A%20%5B%202%2C%20%22%3Ctable%3E%3Ctbody%3E%22%2C%20%22%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%09td%3A%20%5B%203%2C%20%22%3Ctable%3E%3Ctbody%3E%3Ctr%3E%22%2C%20%22%3C/tr%3E%3C/tbody%3E%3C/table%3E%22%20%5D%2C%0A%0A%09_default%3A%20%5B%200%2C%20%22%22%2C%20%22%22%20%5D%0A%7D%3B%0A%0AwrapMap.tbody%20%3D%20wrapMap.tfoot%20%3D%20wrapMap.colgroup%20%3D%20wrapMap.caption%20%3D%20wrapMap.thead%3B%0AwrapMap.th%20%3D%20wrapMap.td%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0Aif%20%28%20%21support.option%20%29%20%7B%0A%09wrapMap.optgroup%20%3D%20wrapMap.option%20%3D%20%5B%201%2C%20%22%3Cselect%20multiple%3D%27multiple%27%3E%22%2C%20%22%3C/select%3E%22%20%5D%3B%0A%7D%0A%0A%0Afunction%20getAll%28%20context%2C%20tag%20%29%20%7B%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Use%20typeof%20to%20avoid%20zero-argument%20method%20invocation%20on%20host%20objects%20%28%2315151%29%0A%09var%20ret%3B%0A%0A%09if%20%28%20typeof%20context.getElementsByTagName%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.getElementsByTagName%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20typeof%20context.querySelectorAll%20%21%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09ret%20%3D%20context.querySelectorAll%28%20tag%20%7C%7C%20%22%2A%22%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%09%09ret%20%3D%20%5B%5D%3B%0A%09%7D%0A%0A%09if%20%28%20tag%20%3D%3D%3D%20undefined%20%7C%7C%20tag%20%26%26%20nodeName%28%20context%2C%20tag%20%29%20%29%20%7B%0A%09%09return%20jQuery.merge%28%20%5B%20context%20%5D%2C%20ret%20%29%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%0A%0A%0A//%20Mark%20scripts%20as%20having%20already%20been%20evaluated%0Afunction%20setGlobalEval%28%20elems%2C%20refElements%20%29%20%7B%0A%09var%20i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09dataPriv.set%28%0A%09%09%09elems%5B%20i%20%5D%2C%0A%09%09%09%22globalEval%22%2C%0A%09%09%09%21refElements%20%7C%7C%20dataPriv.get%28%20refElements%5B%20i%20%5D%2C%20%22globalEval%22%20%29%0A%09%09%29%3B%0A%09%7D%0A%7D%0A%0A%0Avar%20rhtml%20%3D%20/%3C%7C%26%23%3F%5Cw%2B%3B/%3B%0A%0Afunction%20buildFragment%28%20elems%2C%20context%2C%20scripts%2C%20selection%2C%20ignored%20%29%20%7B%0A%09var%20elem%2C%20tmp%2C%20tag%2C%20wrap%2C%20attached%2C%20j%2C%0A%09%09fragment%20%3D%20context.createDocumentFragment%28%29%2C%0A%09%09nodes%20%3D%20%5B%5D%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20elems.length%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09elem%20%3D%20elems%5B%20i%20%5D%3B%0A%0A%09%09if%20%28%20elem%20%7C%7C%20elem%20%3D%3D%3D%200%20%29%20%7B%0A%0A%09%09%09//%20Add%20nodes%20directly%0A%09%09%09if%20%28%20toType%28%20elem%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20elem.nodeType%20%3F%20%5B%20elem%20%5D%20%3A%20elem%20%29%3B%0A%0A%09%09%09//%20Convert%20non-html%20into%20a%20text%20node%0A%09%09%09%7D%20else%20if%20%28%20%21rhtml.test%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09nodes.push%28%20context.createTextNode%28%20elem%20%29%20%29%3B%0A%0A%09%09%09//%20Convert%20html%20into%20DOM%20nodes%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tmp%20%3D%20tmp%20%7C%7C%20fragment.appendChild%28%20context.createElement%28%20%22div%22%20%29%20%29%3B%0A%0A%09%09%09%09//%20Deserialize%20a%20standard%20representation%0A%09%09%09%09tag%20%3D%20%28%20rtagName.exec%28%20elem%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%3B%0A%09%09%09%09wrap%20%3D%20wrapMap%5B%20tag%20%5D%20%7C%7C%20wrapMap._default%3B%0A%09%09%09%09tmp.innerHTML%20%3D%20wrap%5B%201%20%5D%20%2B%20jQuery.htmlPrefilter%28%20elem%20%29%20%2B%20wrap%5B%202%20%5D%3B%0A%0A%09%09%09%09//%20Descend%20through%20wrappers%20to%20the%20right%20content%0A%09%09%09%09j%20%3D%20wrap%5B%200%20%5D%3B%0A%09%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09%09tmp%20%3D%20tmp.lastChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09jQuery.merge%28%20nodes%2C%20tmp.childNodes%20%29%3B%0A%0A%09%09%09%09//%20Remember%20the%20top-level%20container%0A%09%09%09%09tmp%20%3D%20fragment.firstChild%3B%0A%0A%09%09%09%09//%20Ensure%20the%20created%20nodes%20are%20orphaned%20%28%2312392%29%0A%09%09%09%09tmp.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Remove%20wrapper%20from%20fragment%0A%09fragment.textContent%20%3D%20%22%22%3B%0A%0A%09i%20%3D%200%3B%0A%09while%20%28%20%28%20elem%20%3D%20nodes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09//%20Skip%20elements%20already%20in%20the%20context%20collection%20%28trac-4087%29%0A%09%09if%20%28%20selection%20%26%26%20jQuery.inArray%28%20elem%2C%20selection%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09if%20%28%20ignored%20%29%20%7B%0A%09%09%09%09ignored.push%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%09continue%3B%0A%09%09%7D%0A%0A%09%09attached%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Append%20to%20fragment%0A%09%09tmp%20%3D%20getAll%28%20fragment.appendChild%28%20elem%20%29%2C%20%22script%22%20%29%3B%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09if%20%28%20attached%20%29%20%7B%0A%09%09%09setGlobalEval%28%20tmp%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Capture%20executables%0A%09%09if%20%28%20scripts%20%29%20%7B%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20tmp%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20rscriptType.test%28%20elem.type%20%7C%7C%20%22%22%20%29%20%29%20%7B%0A%09%09%09%09%09scripts.push%28%20elem%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20fragment%3B%0A%7D%0A%0A%0Avar%0A%09rkeyEvent%20%3D%20/%5Ekey/%2C%0A%09rmouseEvent%20%3D%20/%5E%28%3F%3Amouse%7Cpointer%7Ccontextmenu%7Cdrag%7Cdrop%29%7Cclick/%2C%0A%09rtypenamespace%20%3D%20/%5E%28%5B%5E.%5D%2A%29%28%3F%3A%5C.%28.%2B%29%7C%29/%3B%0A%0Afunction%20returnTrue%28%29%20%7B%0A%09return%20true%3B%0A%7D%0A%0Afunction%20returnFalse%28%29%20%7B%0A%09return%20false%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%2C%20except%20when%20they%20are%20no-op.%0A//%20So%20expect%20focus%20to%20be%20synchronous%20when%20the%20element%20is%20already%20active%2C%0A//%20and%20blur%20to%20be%20synchronous%20when%20the%20element%20is%20not%20already%20active.%0A//%20%28focus%20and%20blur%20are%20always%20synchronous%20in%20other%20supported%20browsers%2C%0A//%20this%20just%20defines%20when%20we%20can%20count%20on%20it%29.%0Afunction%20expectSync%28%20elem%2C%20type%20%29%20%7B%0A%09return%20%28%20elem%20%3D%3D%3D%20safeActiveElement%28%29%20%29%20%3D%3D%3D%20%28%20type%20%3D%3D%3D%20%22focus%22%20%29%3B%0A%7D%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Accessing%20document.activeElement%20can%20throw%20unexpectedly%0A//%20https%3A//bugs.jquery.com/ticket/13393%0Afunction%20safeActiveElement%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20document.activeElement%3B%0A%09%7D%20catch%20%28%20err%20%29%20%7B%20%7D%0A%7D%0A%0Afunction%20on%28%20elem%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%20one%20%29%20%7B%0A%09var%20origFn%2C%20type%3B%0A%0A%09//%20Types%20can%20be%20a%20map%20of%20types/handlers%0A%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20%28%20types-Object%2C%20selector%2C%20data%20%29%0A%09%09if%20%28%20typeof%20selector%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-Object%2C%20data%20%29%0A%09%09%09data%20%3D%20data%20%7C%7C%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09on%28%20elem%2C%20type%2C%20selector%2C%20data%2C%20types%5B%20type%20%5D%2C%20one%20%29%3B%0A%09%09%7D%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20data%20%3D%3D%20null%20%26%26%20fn%20%3D%3D%20null%20%29%20%7B%0A%0A%09%09//%20%28%20types%2C%20fn%20%29%0A%09%09fn%20%3D%20selector%3B%0A%09%09data%20%3D%20selector%20%3D%20undefined%3B%0A%09%7D%20else%20if%20%28%20fn%20%3D%3D%20null%20%29%20%7B%0A%09%09if%20%28%20typeof%20selector%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20selector%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20%28%20types%2C%20data%2C%20fn%20%29%0A%09%09%09fn%20%3D%20data%3B%0A%09%09%09data%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09fn%20%3D%20returnFalse%3B%0A%09%7D%20else%20if%20%28%20%21fn%20%29%20%7B%0A%09%09return%20elem%3B%0A%09%7D%0A%0A%09if%20%28%20one%20%3D%3D%3D%201%20%29%20%7B%0A%09%09origFn%20%3D%20fn%3B%0A%09%09fn%20%3D%20function%28%20event%20%29%20%7B%0A%0A%09%09%09//%20Can%20use%20an%20empty%20set%2C%20since%20event%20contains%20the%20info%0A%09%09%09jQuery%28%29.off%28%20event%20%29%3B%0A%09%09%09return%20origFn.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Use%20same%20guid%20so%20caller%20can%20remove%20using%20origFn%0A%09%09fn.guid%20%3D%20origFn.guid%20%7C%7C%20%28%20origFn.guid%20%3D%20jQuery.guid%2B%2B%20%29%3B%0A%09%7D%0A%09return%20elem.each%28%20function%28%29%20%7B%0A%09%09jQuery.event.add%28%20this%2C%20types%2C%20fn%2C%20data%2C%20selector%20%29%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A/%2A%0A%20%2A%20Helper%20functions%20for%20managing%20events%20--%20not%20part%20of%20the%20public%20interface.%0A%20%2A%20Props%20to%20Dean%20Edwards%27%20addEvent%20library%20for%20many%20of%20the%20ideas.%0A%20%2A/%0AjQuery.event%20%3D%20%7B%0A%0A%09global%3A%20%7B%7D%2C%0A%0A%09add%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20data%2C%20selector%20%29%20%7B%0A%0A%09%09var%20handleObjIn%2C%20eventHandle%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09//%20Only%20attach%20events%20to%20objects%20that%20accept%20data%0A%09%09if%20%28%20%21acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Caller%20can%20pass%20in%20an%20object%20of%20custom%20data%20in%20lieu%20of%20the%20handler%0A%09%09if%20%28%20handler.handler%20%29%20%7B%0A%09%09%09handleObjIn%20%3D%20handler%3B%0A%09%09%09handler%20%3D%20handleObjIn.handler%3B%0A%09%09%09selector%20%3D%20handleObjIn.selector%3B%0A%09%09%7D%0A%0A%09%09//%20Ensure%20that%20invalid%20selectors%20throw%20exceptions%20at%20attach%20time%0A%09%09//%20Evaluate%20against%20documentElement%20in%20case%20elem%20is%20a%20non-element%20node%20%28e.g.%2C%20document%29%0A%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09jQuery.find.matchesSelector%28%20documentElement%2C%20selector%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20the%20handler%20has%20a%20unique%20ID%2C%20used%20to%20find/remove%20it%20later%0A%09%09if%20%28%20%21handler.guid%20%29%20%7B%0A%09%09%09handler.guid%20%3D%20jQuery.guid%2B%2B%3B%0A%09%09%7D%0A%0A%09%09//%20Init%20the%20element%27s%20event%20structure%20and%20main%20handler%2C%20if%20this%20is%20the%20first%0A%09%09if%20%28%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09events%20%3D%20elemData.events%20%3D%20Object.create%28%20null%20%29%3B%0A%09%09%7D%0A%09%09if%20%28%20%21%28%20eventHandle%20%3D%20elemData.handle%20%29%20%29%20%7B%0A%09%09%09eventHandle%20%3D%20elemData.handle%20%3D%20function%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Discard%20the%20second%20event%20of%20a%20jQuery.event.trigger%28%29%20and%0A%09%09%09%09//%20when%20an%20event%20is%20called%20after%20a%20page%20has%20unloaded%0A%09%09%09%09return%20typeof%20jQuery%20%21%3D%3D%20%22undefined%22%20%26%26%20jQuery.event.triggered%20%21%3D%3D%20e.type%20%3F%0A%09%09%09%09%09jQuery.event.dispatch.apply%28%20elem%2C%20arguments%20%29%20%3A%20undefined%3B%0A%09%09%09%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Handle%20multiple%20events%20separated%20by%20a%20space%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20There%20%2Amust%2A%20be%20a%20type%2C%20no%20attaching%20namespace-only%20handlers%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20event%20changes%20its%20type%2C%20use%20the%20special%20event%20handlers%20for%20the%20changed%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20If%20selector%20defined%2C%20determine%20special%20event%20api%20type%2C%20otherwise%20given%20type%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%0A%09%09%09//%20Update%20special%20based%20on%20newly%20reset%20type%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09//%20handleObj%20is%20passed%20to%20all%20event%20handlers%0A%09%09%09handleObj%20%3D%20jQuery.extend%28%20%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09origType%3A%20origType%2C%0A%09%09%09%09data%3A%20data%2C%0A%09%09%09%09handler%3A%20handler%2C%0A%09%09%09%09guid%3A%20handler.guid%2C%0A%09%09%09%09selector%3A%20selector%2C%0A%09%09%09%09needsContext%3A%20selector%20%26%26%20jQuery.expr.match.needsContext.test%28%20selector%20%29%2C%0A%09%09%09%09namespace%3A%20namespaces.join%28%20%22.%22%20%29%0A%09%09%09%7D%2C%20handleObjIn%20%29%3B%0A%0A%09%09%09//%20Init%20the%20event%20handler%20queue%20if%20we%27re%20the%20first%0A%09%09%09if%20%28%20%21%28%20handlers%20%3D%20events%5B%20type%20%5D%20%29%20%29%20%7B%0A%09%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%3D%20%5B%5D%3B%0A%09%09%09%09handlers.delegateCount%20%3D%200%3B%0A%0A%09%09%09%09//%20Only%20use%20addEventListener%20if%20the%20special%20events%20handler%20returns%20false%0A%09%09%09%09if%20%28%20%21special.setup%20%7C%7C%0A%09%09%09%09%09special.setup.call%28%20elem%2C%20data%2C%20namespaces%2C%20eventHandle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09if%20%28%20elem.addEventListener%20%29%20%7B%0A%09%09%09%09%09%09elem.addEventListener%28%20type%2C%20eventHandle%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20special.add%20%29%20%7B%0A%09%09%09%09special.add.call%28%20elem%2C%20handleObj%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21handleObj.handler.guid%20%29%20%7B%0A%09%09%09%09%09handleObj.handler.guid%20%3D%20handler.guid%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20to%20the%20element%27s%20handler%20list%2C%20delegates%20in%20front%0A%09%09%09if%20%28%20selector%20%29%20%7B%0A%09%09%09%09handlers.splice%28%20handlers.delegateCount%2B%2B%2C%200%2C%20handleObj%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09handlers.push%28%20handleObj%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Keep%20track%20of%20which%20events%20have%20ever%20been%20used%2C%20for%20event%20optimization%0A%09%09%09jQuery.event.global%5B%20type%20%5D%20%3D%20true%3B%0A%09%09%7D%0A%0A%09%7D%2C%0A%0A%09//%20Detach%20an%20event%20or%20set%20of%20events%20from%20an%20element%0A%09remove%3A%20function%28%20elem%2C%20types%2C%20handler%2C%20selector%2C%20mappedTypes%20%29%20%7B%0A%0A%09%09var%20j%2C%20origCount%2C%20tmp%2C%0A%09%09%09events%2C%20t%2C%20handleObj%2C%0A%09%09%09special%2C%20handlers%2C%20type%2C%20namespaces%2C%20origType%2C%0A%09%09%09elemData%20%3D%20dataPriv.hasData%28%20elem%20%29%20%26%26%20dataPriv.get%28%20elem%20%29%3B%0A%0A%09%09if%20%28%20%21elemData%20%7C%7C%20%21%28%20events%20%3D%20elemData.events%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Once%20for%20each%20type.namespace%20in%20types%3B%20type%20may%20be%20omitted%0A%09%09types%20%3D%20%28%20types%20%7C%7C%20%22%22%20%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%09%09t%20%3D%20types.length%3B%0A%09%09while%20%28%20t--%20%29%20%7B%0A%09%09%09tmp%20%3D%20rtypenamespace.exec%28%20types%5B%20t%20%5D%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09%09type%20%3D%20origType%20%3D%20tmp%5B%201%20%5D%3B%0A%09%09%09namespaces%20%3D%20%28%20tmp%5B%202%20%5D%20%7C%7C%20%22%22%20%29.split%28%20%22.%22%20%29.sort%28%29%3B%0A%0A%09%09%09//%20Unbind%20all%20events%20%28on%20this%20namespace%2C%20if%20provided%29%20for%20the%20element%0A%09%09%09if%20%28%20%21type%20%29%20%7B%0A%09%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%2B%20types%5B%20t%20%5D%2C%20handler%2C%20selector%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09continue%3B%0A%09%09%09%7D%0A%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09%09type%20%3D%20%28%20selector%20%3F%20special.delegateType%20%3A%20special.bindType%20%29%20%7C%7C%20type%3B%0A%09%09%09handlers%20%3D%20events%5B%20type%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09tmp%20%3D%20tmp%5B%202%20%5D%20%26%26%0A%09%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%3B%0A%0A%09%09%09//%20Remove%20matching%20events%0A%09%09%09origCount%20%3D%20j%20%3D%20handlers.length%3B%0A%09%09%09while%20%28%20j--%20%29%20%7B%0A%09%09%09%09handleObj%20%3D%20handlers%5B%20j%20%5D%3B%0A%0A%09%09%09%09if%20%28%20%28%20mappedTypes%20%7C%7C%20origType%20%3D%3D%3D%20handleObj.origType%20%29%20%26%26%0A%09%09%09%09%09%28%20%21handler%20%7C%7C%20handler.guid%20%3D%3D%3D%20handleObj.guid%20%29%20%26%26%0A%09%09%09%09%09%28%20%21tmp%20%7C%7C%20tmp.test%28%20handleObj.namespace%20%29%20%29%20%26%26%0A%09%09%09%09%09%28%20%21selector%20%7C%7C%20selector%20%3D%3D%3D%20handleObj.selector%20%7C%7C%0A%09%09%09%09%09%09selector%20%3D%3D%3D%20%22%2A%2A%22%20%26%26%20handleObj.selector%20%29%20%29%20%7B%0A%09%09%09%09%09handlers.splice%28%20j%2C%201%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20handleObj.selector%20%29%20%7B%0A%09%09%09%09%09%09handlers.delegateCount--%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20special.remove%20%29%20%7B%0A%09%09%09%09%09%09special.remove.call%28%20elem%2C%20handleObj%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Remove%20generic%20event%20handler%20if%20we%20removed%20something%20and%20no%20more%20handlers%20exist%0A%09%09%09//%20%28avoids%20potential%20for%20endless%20recursion%20during%20removal%20of%20special%20event%20handlers%29%0A%09%09%09if%20%28%20origCount%20%26%26%20%21handlers.length%20%29%20%7B%0A%09%09%09%09if%20%28%20%21special.teardown%20%7C%7C%0A%09%09%09%09%09special.teardown.call%28%20elem%2C%20namespaces%2C%20elemData.handle%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20elemData.handle%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09delete%20events%5B%20type%20%5D%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Remove%20data%20and%20the%20expando%20if%20it%27s%20no%20longer%20used%0A%09%09if%20%28%20jQuery.isEmptyObject%28%20events%20%29%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20elem%2C%20%22handle%20events%22%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09dispatch%3A%20function%28%20nativeEvent%20%29%20%7B%0A%0A%09%09var%20i%2C%20j%2C%20ret%2C%20matched%2C%20handleObj%2C%20handlerQueue%2C%0A%09%09%09args%20%3D%20new%20Array%28%20arguments.length%20%29%2C%0A%0A%09%09%09//%20Make%20a%20writable%20jQuery.Event%20from%20the%20native%20event%20object%0A%09%09%09event%20%3D%20jQuery.event.fix%28%20nativeEvent%20%29%2C%0A%0A%09%09%09handlers%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20this%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%7C%7C%20%5B%5D%2C%0A%09%09%09special%20%3D%20jQuery.event.special%5B%20event.type%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09//%20Use%20the%20fix-ed%20jQuery.Event%20rather%20than%20the%20%28read-only%29%20native%20event%0A%09%09args%5B%200%20%5D%20%3D%20event%3B%0A%0A%09%09for%20%28%20i%20%3D%201%3B%20i%20%3C%20arguments.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09args%5B%20i%20%5D%20%3D%20arguments%5B%20i%20%5D%3B%0A%09%09%7D%0A%0A%09%09event.delegateTarget%20%3D%20this%3B%0A%0A%09%09//%20Call%20the%20preDispatch%20hook%20for%20the%20mapped%20type%2C%20and%20let%20it%20bail%20if%20desired%0A%09%09if%20%28%20special.preDispatch%20%26%26%20special.preDispatch.call%28%20this%2C%20event%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20handlers%0A%09%09handlerQueue%20%3D%20jQuery.event.handlers.call%28%20this%2C%20event%2C%20handlers%20%29%3B%0A%0A%09%09//%20Run%20delegates%20first%3B%20they%20may%20want%20to%20stop%20propagation%20beneath%20us%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20matched%20%3D%20handlerQueue%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09event.currentTarget%20%3D%20matched.elem%3B%0A%0A%09%09%09j%20%3D%200%3B%0A%09%09%09while%20%28%20%28%20handleObj%20%3D%20matched.handlers%5B%20j%2B%2B%20%5D%20%29%20%26%26%0A%09%09%09%09%21event.isImmediatePropagationStopped%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20If%20the%20event%20is%20namespaced%2C%20then%20each%20handler%20is%20only%20invoked%20if%20it%20is%0A%09%09%09%09//%20specially%20universal%20or%20its%20namespaces%20are%20a%20superset%20of%20the%20event%27s.%0A%09%09%09%09if%20%28%20%21event.rnamespace%20%7C%7C%20handleObj.namespace%20%3D%3D%3D%20false%20%7C%7C%0A%09%09%09%09%09event.rnamespace.test%28%20handleObj.namespace%20%29%20%29%20%7B%0A%0A%09%09%09%09%09event.handleObj%20%3D%20handleObj%3B%0A%09%09%09%09%09event.data%20%3D%20handleObj.data%3B%0A%0A%09%09%09%09%09ret%20%3D%20%28%20%28%20jQuery.event.special%5B%20handleObj.origType%20%5D%20%7C%7C%20%7B%7D%20%29.handle%20%7C%7C%0A%09%09%09%09%09%09handleObj.handler%20%29.apply%28%20matched.elem%2C%20args%20%29%3B%0A%0A%09%09%09%09%09if%20%28%20ret%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%28%20event.result%20%3D%20ret%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Call%20the%20postDispatch%20hook%20for%20the%20mapped%20type%0A%09%09if%20%28%20special.postDispatch%20%29%20%7B%0A%09%09%09special.postDispatch.call%28%20this%2C%20event%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09handlers%3A%20function%28%20event%2C%20handlers%20%29%20%7B%0A%09%09var%20i%2C%20handleObj%2C%20sel%2C%20matchedHandlers%2C%20matchedSelectors%2C%0A%09%09%09handlerQueue%20%3D%20%5B%5D%2C%0A%09%09%09delegateCount%20%3D%20handlers.delegateCount%2C%0A%09%09%09cur%20%3D%20event.target%3B%0A%0A%09%09//%20Find%20delegate%20handlers%0A%09%09if%20%28%20delegateCount%20%26%26%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D9%0A%09%09%09//%20Black-hole%20SVG%20%3Cuse%3E%20instance%20trees%20%28trac-13180%29%0A%09%09%09cur.nodeType%20%26%26%0A%0A%09%09%09//%20Support%3A%20Firefox%20%3C%3D42%0A%09%09%09//%20Suppress%20spec-violating%20clicks%20indicating%20a%20non-primary%20pointer%20button%20%28trac-3861%29%0A%09%09%09//%20https%3A//www.w3.org/TR/DOM-Level-3-Events/%23event-type-click%0A%09%09%09//%20Support%3A%20IE%2011%20only%0A%09%09%09//%20...but%20not%20arrow%20key%20%22clicks%22%20of%20radio%20inputs%2C%20which%20can%20have%20%60button%60%20-1%20%28gh-2343%29%0A%09%09%09%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20event.button%20%3E%3D%201%20%29%20%29%20%7B%0A%0A%09%09%09for%20%28%20%3B%20cur%20%21%3D%3D%20this%3B%20cur%20%3D%20cur.parentNode%20%7C%7C%20this%20%29%20%7B%0A%0A%09%09%09%09//%20Don%27t%20check%20non-elements%20%28%2313208%29%0A%09%09%09%09//%20Don%27t%20process%20clicks%20on%20disabled%20elements%20%28%236911%2C%20%238165%2C%20%2311382%2C%20%2311764%29%0A%09%09%09%09if%20%28%20cur.nodeType%20%3D%3D%3D%201%20%26%26%20%21%28%20event.type%20%3D%3D%3D%20%22click%22%20%26%26%20cur.disabled%20%3D%3D%3D%20true%20%29%20%29%20%7B%0A%09%09%09%09%09matchedHandlers%20%3D%20%5B%5D%3B%0A%09%09%09%09%09matchedSelectors%20%3D%20%7B%7D%3B%0A%09%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20delegateCount%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09handleObj%20%3D%20handlers%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09%09//%20Don%27t%20conflict%20with%20Object.prototype%20properties%20%28%2313203%29%0A%09%09%09%09%09%09sel%20%3D%20handleObj.selector%20%2B%20%22%20%22%3B%0A%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09%09%09matchedSelectors%5B%20sel%20%5D%20%3D%20handleObj.needsContext%20%3F%0A%09%09%09%09%09%09%09%09jQuery%28%20sel%2C%20this%20%29.index%28%20cur%20%29%20%3E%20-1%20%3A%0A%09%09%09%09%09%09%09%09jQuery.find%28%20sel%2C%20this%2C%20null%2C%20%5B%20cur%20%5D%20%29.length%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%20%28%20matchedSelectors%5B%20sel%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09matchedHandlers.push%28%20handleObj%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20matchedHandlers.length%20%29%20%7B%0A%09%09%09%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20matchedHandlers%20%7D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Add%20the%20remaining%20%28directly-bound%29%20handlers%0A%09%09cur%20%3D%20this%3B%0A%09%09if%20%28%20delegateCount%20%3C%20handlers.length%20%29%20%7B%0A%09%09%09handlerQueue.push%28%20%7B%20elem%3A%20cur%2C%20handlers%3A%20handlers.slice%28%20delegateCount%20%29%20%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20handlerQueue%3B%0A%09%7D%2C%0A%0A%09addProp%3A%20function%28%20name%2C%20hook%20%29%20%7B%0A%09%09Object.defineProperty%28%20jQuery.Event.prototype%2C%20name%2C%20%7B%0A%09%09%09enumerable%3A%20true%2C%0A%09%09%09configurable%3A%20true%2C%0A%0A%09%09%09get%3A%20isFunction%28%20hook%20%29%20%3F%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20hook%28%20this.originalEvent%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%3A%0A%09%09%09%09function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.originalEvent%20%29%20%7B%0A%09%09%09%09%09%09%09return%20this.originalEvent%5B%20name%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20value%20%29%20%7B%0A%09%09%09%09Object.defineProperty%28%20this%2C%20name%2C%20%7B%0A%09%09%09%09%09enumerable%3A%20true%2C%0A%09%09%09%09%09configurable%3A%20true%2C%0A%09%09%09%09%09writable%3A%20true%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09fix%3A%20function%28%20originalEvent%20%29%20%7B%0A%09%09return%20originalEvent%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09originalEvent%20%3A%0A%09%09%09new%20jQuery.Event%28%20originalEvent%20%29%3B%0A%09%7D%2C%0A%0A%09special%3A%20%7B%0A%09%09load%3A%20%7B%0A%0A%09%09%09//%20Prevent%20triggered%20image.load%20events%20from%20bubbling%20to%20window.load%0A%09%09%09noBubble%3A%20true%0A%09%09%7D%2C%0A%09%09click%3A%20%7B%0A%0A%09%09%09//%20Utilize%20native%20event%20to%20ensure%20correct%20state%20for%20checkable%20inputs%0A%09%09%09setup%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20dataPriv.set%28%20el%2C%20%22click%22%2C%20...%20%29%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%2C%20returnTrue%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09trigger%3A%20function%28%20data%20%29%20%7B%0A%0A%09%09%09%09//%20For%20mutual%20compressibility%20with%20_default%2C%20replace%20%60this%60%20access%20with%20a%20local%20var.%0A%09%09%09%09//%20%60%7C%7C%20data%60%20is%20dead%20code%20meant%20only%20to%20preserve%20the%20variable%20through%20minification.%0A%09%09%09%09var%20el%20%3D%20this%20%7C%7C%20data%3B%0A%0A%09%09%09%09//%20Force%20setup%20before%20triggering%20a%20click%0A%09%09%09%09if%20%28%20rcheckableType.test%28%20el.type%20%29%20%26%26%0A%09%09%09%09%09el.click%20%26%26%20nodeName%28%20el%2C%20%22input%22%20%29%20%29%20%7B%0A%0A%09%09%09%09%09leverageNative%28%20el%2C%20%22click%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09//%20For%20cross-browser%20consistency%2C%20suppress%20native%20.click%28%29%20on%20links%0A%09%09%09//%20Also%20prevent%20it%20if%20we%27re%20currently%20inside%20a%20leveraged%20native-event%20stack%0A%09%09%09_default%3A%20function%28%20event%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20event.target%3B%0A%09%09%09%09return%20rcheckableType.test%28%20target.type%20%29%20%26%26%0A%09%09%09%09%09target.click%20%26%26%20nodeName%28%20target%2C%20%22input%22%20%29%20%26%26%0A%09%09%09%09%09dataPriv.get%28%20target%2C%20%22click%22%20%29%20%7C%7C%0A%09%09%09%09%09nodeName%28%20target%2C%20%22a%22%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09beforeunload%3A%20%7B%0A%09%09%09postDispatch%3A%20function%28%20event%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20Firefox%2020%2B%0A%09%09%09%09//%20Firefox%20doesn%27t%20alert%20if%20the%20returnValue%20field%20is%20not%20set.%0A%09%09%09%09if%20%28%20event.result%20%21%3D%3D%20undefined%20%26%26%20event.originalEvent%20%29%20%7B%0A%09%09%09%09%09event.originalEvent.returnValue%20%3D%20event.result%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Ensure%20the%20presence%20of%20an%20event%20listener%20that%20handles%20manually-triggered%0A//%20synthetic%20events%20by%20interrupting%20progress%20until%20reinvoked%20in%20response%20to%0A//%20%2Anative%2A%20events%20that%20it%20fires%20directly%2C%20ensuring%20that%20state%20changes%20have%0A//%20already%20occurred%20before%20other%20listeners%20are%20invoked.%0Afunction%20leverageNative%28%20el%2C%20type%2C%20expectSync%20%29%20%7B%0A%0A%09//%20Missing%20expectSync%20indicates%20a%20trigger%20call%2C%20which%20must%20force%20setup%20through%20jQuery.event.add%0A%09if%20%28%20%21expectSync%20%29%20%7B%0A%09%09if%20%28%20dataPriv.get%28%20el%2C%20type%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09jQuery.event.add%28%20el%2C%20type%2C%20returnTrue%20%29%3B%0A%09%09%7D%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Register%20the%20controller%20as%20a%20special%20universal%20handler%20for%20all%20event%20namespaces%0A%09dataPriv.set%28%20el%2C%20type%2C%20false%20%29%3B%0A%09jQuery.event.add%28%20el%2C%20type%2C%20%7B%0A%09%09namespace%3A%20false%2C%0A%09%09handler%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20notAsync%2C%20result%2C%0A%09%09%09%09saved%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09if%20%28%20%28%20event.isTrigger%20%26%201%20%29%20%26%26%20this%5B%20type%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Interrupt%20processing%20of%20the%20outer%20synthetic%20.trigger%28%29ed%20event%0A%09%09%09%09//%20Saved%20data%20should%20be%20false%20in%20such%20cases%2C%20but%20might%20be%20a%20leftover%20capture%20object%0A%09%09%09%09//%20from%20an%20async%20native%20handler%20%28gh-4350%29%0A%09%09%09%09if%20%28%20%21saved.length%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20arguments%20for%20use%20when%20handling%20the%20inner%20native%20event%0A%09%09%09%09%09//%20There%20will%20always%20be%20at%20least%20one%20argument%20%28an%20event%20object%29%2C%20so%20this%20array%0A%09%09%09%09%09//%20will%20not%20be%20confused%20with%20a%20leftover%20capture%20object.%0A%09%09%09%09%09saved%20%3D%20slice.call%28%20arguments%20%29%3B%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20saved%20%29%3B%0A%0A%09%09%09%09%09//%20Trigger%20the%20native%20event%20and%20capture%20its%20result%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09//%20focus%28%29%20and%20blur%28%29%20are%20asynchronous%0A%09%09%09%09%09notAsync%20%3D%20expectSync%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09this%5B%20type%20%5D%28%29%3B%0A%09%09%09%09%09result%20%3D%20dataPriv.get%28%20this%2C%20type%20%29%3B%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%7C%7C%20notAsync%20%29%20%7B%0A%09%09%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20false%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09result%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09if%20%28%20saved%20%21%3D%3D%20result%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Cancel%20the%20outer%20synthetic%20event%0A%09%09%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%09%09return%20result.value%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20this%20is%20an%20inner%20synthetic%20event%20for%20an%20event%20with%20a%20bubbling%20surrogate%0A%09%09%09%09//%20%28focus%20or%20blur%29%2C%20assume%20that%20the%20surrogate%20already%20propagated%20from%20triggering%20the%0A%09%09%09%09//%20native%20event%20and%20prevent%20that%20from%20happening%20again%20here.%0A%09%09%09%09//%20This%20technically%20gets%20the%20ordering%20wrong%20w.r.t.%20to%20%60.trigger%28%29%60%20%28in%20which%20the%0A%09%09%09%09//%20bubbling%20surrogate%20propagates%20%2Aafter%2A%20the%20non-bubbling%20base%29%2C%20but%20that%20seems%0A%09%09%09%09//%20less%20bad%20than%20duplication.%0A%09%09%09%09%7D%20else%20if%20%28%20%28%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%20%29.delegateType%20%29%20%7B%0A%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20is%20a%20native%20event%20triggered%20above%2C%20everything%20is%20now%20in%20order%0A%09%09%09//%20Fire%20an%20inner%20synthetic%20event%20with%20the%20original%20arguments%0A%09%09%09%7D%20else%20if%20%28%20saved.length%20%29%20%7B%0A%0A%09%09%09%09//%20...and%20capture%20the%20result%0A%09%09%09%09dataPriv.set%28%20this%2C%20type%2C%20%7B%0A%09%09%09%09%09value%3A%20jQuery.event.trigger%28%0A%0A%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2B%0A%09%09%09%09%09%09//%20Extend%20with%20the%20prototype%20to%20reset%20the%20above%20stopImmediatePropagation%28%29%0A%09%09%09%09%09%09jQuery.extend%28%20saved%5B%200%20%5D%2C%20jQuery.Event.prototype%20%29%2C%0A%09%09%09%09%09%09saved.slice%28%201%20%29%2C%0A%09%09%09%09%09%09this%0A%09%09%09%09%09%29%0A%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Abort%20handling%20of%20the%20native%20event%0A%09%09%09%09event.stopImmediatePropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%0A%0AjQuery.removeEvent%20%3D%20function%28%20elem%2C%20type%2C%20handle%20%29%20%7B%0A%0A%09//%20This%20%22if%22%20is%20needed%20for%20plain%20objects%0A%09if%20%28%20elem.removeEventListener%20%29%20%7B%0A%09%09elem.removeEventListener%28%20type%2C%20handle%20%29%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.Event%20%3D%20function%28%20src%2C%20props%20%29%20%7B%0A%0A%09//%20Allow%20instantiation%20without%20the%20%27new%27%20keyword%0A%09if%20%28%20%21%28%20this%20instanceof%20jQuery.Event%20%29%20%29%20%7B%0A%09%09return%20new%20jQuery.Event%28%20src%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Event%20object%0A%09if%20%28%20src%20%26%26%20src.type%20%29%20%7B%0A%09%09this.originalEvent%20%3D%20src%3B%0A%09%09this.type%20%3D%20src.type%3B%0A%0A%09%09//%20Events%20bubbling%20up%20the%20document%20may%20have%20been%20marked%20as%20prevented%0A%09%09//%20by%20a%20handler%20lower%20down%20the%20tree%3B%20reflect%20the%20correct%20value.%0A%09%09this.isDefaultPrevented%20%3D%20src.defaultPrevented%20%7C%7C%0A%09%09%09%09src.defaultPrevented%20%3D%3D%3D%20undefined%20%26%26%0A%0A%09%09%09%09//%20Support%3A%20Android%20%3C%3D2.3%20only%0A%09%09%09%09src.returnValue%20%3D%3D%3D%20false%20%3F%0A%09%09%09returnTrue%20%3A%0A%09%09%09returnFalse%3B%0A%0A%09%09//%20Create%20target%20properties%0A%09%09//%20Support%3A%20Safari%20%3C%3D6%20-%207%20only%0A%09%09//%20Target%20should%20not%20be%20a%20text%20node%20%28%23504%2C%20%2313143%29%0A%09%09this.target%20%3D%20%28%20src.target%20%26%26%20src.target.nodeType%20%3D%3D%3D%203%20%29%20%3F%0A%09%09%09src.target.parentNode%20%3A%0A%09%09%09src.target%3B%0A%0A%09%09this.currentTarget%20%3D%20src.currentTarget%3B%0A%09%09this.relatedTarget%20%3D%20src.relatedTarget%3B%0A%0A%09//%20Event%20type%0A%09%7D%20else%20%7B%0A%09%09this.type%20%3D%20src%3B%0A%09%7D%0A%0A%09//%20Put%20explicitly%20provided%20properties%20onto%20the%20event%20object%0A%09if%20%28%20props%20%29%20%7B%0A%09%09jQuery.extend%28%20this%2C%20props%20%29%3B%0A%09%7D%0A%0A%09//%20Create%20a%20timestamp%20if%20incoming%20event%20doesn%27t%20have%20one%0A%09this.timeStamp%20%3D%20src%20%26%26%20src.timeStamp%20%7C%7C%20Date.now%28%29%3B%0A%0A%09//%20Mark%20it%20as%20fixed%0A%09this%5B%20jQuery.expando%20%5D%20%3D%20true%3B%0A%7D%3B%0A%0A//%20jQuery.Event%20is%20based%20on%20DOM3%20Events%20as%20specified%20by%20the%20ECMAScript%20Language%20Binding%0A//%20https%3A//www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html%0AjQuery.Event.prototype%20%3D%20%7B%0A%09constructor%3A%20jQuery.Event%2C%0A%09isDefaultPrevented%3A%20returnFalse%2C%0A%09isPropagationStopped%3A%20returnFalse%2C%0A%09isImmediatePropagationStopped%3A%20returnFalse%2C%0A%09isSimulated%3A%20false%2C%0A%0A%09preventDefault%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isDefaultPrevented%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopPropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isPropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09stopImmediatePropagation%3A%20function%28%29%20%7B%0A%09%09var%20e%20%3D%20this.originalEvent%3B%0A%0A%09%09this.isImmediatePropagationStopped%20%3D%20returnTrue%3B%0A%0A%09%09if%20%28%20e%20%26%26%20%21this.isSimulated%20%29%20%7B%0A%09%09%09e.stopImmediatePropagation%28%29%3B%0A%09%09%7D%0A%0A%09%09this.stopPropagation%28%29%3B%0A%09%7D%0A%7D%3B%0A%0A//%20Includes%20all%20common%20event%20props%20including%20KeyEvent%20and%20MouseEvent%20specific%20props%0AjQuery.each%28%20%7B%0A%09altKey%3A%20true%2C%0A%09bubbles%3A%20true%2C%0A%09cancelable%3A%20true%2C%0A%09changedTouches%3A%20true%2C%0A%09ctrlKey%3A%20true%2C%0A%09detail%3A%20true%2C%0A%09eventPhase%3A%20true%2C%0A%09metaKey%3A%20true%2C%0A%09pageX%3A%20true%2C%0A%09pageY%3A%20true%2C%0A%09shiftKey%3A%20true%2C%0A%09view%3A%20true%2C%0A%09%22char%22%3A%20true%2C%0A%09code%3A%20true%2C%0A%09charCode%3A%20true%2C%0A%09key%3A%20true%2C%0A%09keyCode%3A%20true%2C%0A%09button%3A%20true%2C%0A%09buttons%3A%20true%2C%0A%09clientX%3A%20true%2C%0A%09clientY%3A%20true%2C%0A%09offsetX%3A%20true%2C%0A%09offsetY%3A%20true%2C%0A%09pointerId%3A%20true%2C%0A%09pointerType%3A%20true%2C%0A%09screenX%3A%20true%2C%0A%09screenY%3A%20true%2C%0A%09targetTouches%3A%20true%2C%0A%09toElement%3A%20true%2C%0A%09touches%3A%20true%2C%0A%0A%09which%3A%20function%28%20event%20%29%20%7B%0A%09%09var%20button%20%3D%20event.button%3B%0A%0A%09%09//%20Add%20which%20for%20key%20events%0A%09%09if%20%28%20event.which%20%3D%3D%20null%20%26%26%20rkeyEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09return%20event.charCode%20%21%3D%20null%20%3F%20event.charCode%20%3A%20event.keyCode%3B%0A%09%09%7D%0A%0A%09%09//%20Add%20which%20for%20click%3A%201%20%3D%3D%3D%20left%3B%202%20%3D%3D%3D%20middle%3B%203%20%3D%3D%3D%20right%0A%09%09if%20%28%20%21event.which%20%26%26%20button%20%21%3D%3D%20undefined%20%26%26%20rmouseEvent.test%28%20event.type%20%29%20%29%20%7B%0A%09%09%09if%20%28%20button%20%26%201%20%29%20%7B%0A%09%09%09%09return%201%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%202%20%29%20%7B%0A%09%09%09%09return%203%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20button%20%26%204%20%29%20%7B%0A%09%09%09%09return%202%3B%0A%09%09%09%7D%0A%0A%09%09%09return%200%3B%0A%09%09%7D%0A%0A%09%09return%20event.which%3B%0A%09%7D%0A%7D%2C%20jQuery.event.addProp%20%29%3B%0A%0AjQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20type%2C%20delegateType%20%29%20%7B%0A%09jQuery.event.special%5B%20type%20%5D%20%3D%20%7B%0A%0A%09%09//%20Utilize%20native%20event%20if%20possible%20so%20blur/focus%20sequence%20is%20correct%0A%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Claim%20the%20first%20handler%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22focus%22%2C%20...%20%29%0A%09%09%09//%20dataPriv.set%28%20this%2C%20%22blur%22%2C%20...%20%29%0A%09%09%09leverageNative%28%20this%2C%20type%2C%20expectSync%20%29%3B%0A%0A%09%09%09//%20Return%20false%20to%20allow%20normal%20processing%20in%20the%20caller%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09trigger%3A%20function%28%29%20%7B%0A%0A%09%09%09//%20Force%20setup%20before%20trigger%0A%09%09%09leverageNative%28%20this%2C%20type%20%29%3B%0A%0A%09%09%09//%20Return%20non-false%20to%20allow%20normal%20event-path%20propagation%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%0A%09%09delegateType%3A%20delegateType%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Create%20mouseenter/leave%20events%20using%20mouseover/out%20and%20event-time%20checks%0A//%20so%20that%20event%20delegation%20works%20in%20jQuery.%0A//%20Do%20the%20same%20for%20pointerenter/pointerleave%20and%20pointerover/pointerout%0A//%0A//%20Support%3A%20Safari%207%20only%0A//%20Safari%20sends%20mouseenter%20too%20often%3B%20see%3A%0A//%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D470258%0A//%20for%20the%20description%20of%20the%20bug%20%28it%20existed%20in%20older%20Chrome%20versions%20as%20well%29.%0AjQuery.each%28%20%7B%0A%09mouseenter%3A%20%22mouseover%22%2C%0A%09mouseleave%3A%20%22mouseout%22%2C%0A%09pointerenter%3A%20%22pointerover%22%2C%0A%09pointerleave%3A%20%22pointerout%22%0A%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%09jQuery.event.special%5B%20orig%20%5D%20%3D%20%7B%0A%09%09delegateType%3A%20fix%2C%0A%09%09bindType%3A%20fix%2C%0A%0A%09%09handle%3A%20function%28%20event%20%29%20%7B%0A%09%09%09var%20ret%2C%0A%09%09%09%09target%20%3D%20this%2C%0A%09%09%09%09related%20%3D%20event.relatedTarget%2C%0A%09%09%09%09handleObj%20%3D%20event.handleObj%3B%0A%0A%09%09%09//%20For%20mouseenter/leave%20call%20the%20handler%20if%20related%20is%20outside%20the%20target.%0A%09%09%09//%20NB%3A%20No%20relatedTarget%20if%20the%20mouse%20left/entered%20the%20browser%20window%0A%09%09%09if%20%28%20%21related%20%7C%7C%20%28%20related%20%21%3D%3D%20target%20%26%26%20%21jQuery.contains%28%20target%2C%20related%20%29%20%29%20%29%20%7B%0A%09%09%09%09event.type%20%3D%20handleObj.origType%3B%0A%09%09%09%09ret%20%3D%20handleObj.handler.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%09%09event.type%20%3D%20fix%3B%0A%09%09%09%7D%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09on%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09one%3A%20function%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20on%28%20this%2C%20types%2C%20selector%2C%20data%2C%20fn%2C%201%20%29%3B%0A%09%7D%2C%0A%09off%3A%20function%28%20types%2C%20selector%2C%20fn%20%29%20%7B%0A%09%09var%20handleObj%2C%20type%3B%0A%09%09if%20%28%20types%20%26%26%20types.preventDefault%20%26%26%20types.handleObj%20%29%20%7B%0A%0A%09%09%09//%20%28%20event%20%29%20%20dispatched%20jQuery.Event%0A%09%09%09handleObj%20%3D%20types.handleObj%3B%0A%09%09%09jQuery%28%20types.delegateTarget%20%29.off%28%0A%09%09%09%09handleObj.namespace%20%3F%0A%09%09%09%09%09handleObj.origType%20%2B%20%22.%22%20%2B%20handleObj.namespace%20%3A%0A%09%09%09%09%09handleObj.origType%2C%0A%09%09%09%09handleObj.selector%2C%0A%09%09%09%09handleObj.handler%0A%09%09%09%29%3B%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20typeof%20types%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types-object%20%5B%2C%20selector%5D%20%29%0A%09%09%09for%20%28%20type%20in%20types%20%29%20%7B%0A%09%09%09%09this.off%28%20type%2C%20selector%2C%20types%5B%20type%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20this%3B%0A%09%09%7D%0A%09%09if%20%28%20selector%20%3D%3D%3D%20false%20%7C%7C%20typeof%20selector%20%3D%3D%3D%20%22function%22%20%29%20%7B%0A%0A%09%09%09//%20%28%20types%20%5B%2C%20fn%5D%20%29%0A%09%09%09fn%20%3D%20selector%3B%0A%09%09%09selector%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20fn%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09fn%20%3D%20returnFalse%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.remove%28%20this%2C%20types%2C%20fn%2C%20selector%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%0A%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%2C%20Edge%2012%20-%2013%20only%0A%09//%20In%20IE/Edge%20using%20regex%20groups%20here%20causes%20severe%20slowdowns.%0A%09//%20See%20https%3A//connect.microsoft.com/IE/feedback/details/1736512/%0A%09rnoInnerhtml%20%3D%20/%3Cscript%7C%3Cstyle%7C%3Clink/i%2C%0A%0A%09//%20checked%3D%22checked%22%20or%20checked%0A%09rchecked%20%3D%20/checked%5Cs%2A%28%3F%3A%5B%5E%3D%5D%7C%3D%5Cs%2A.checked.%29/i%2C%0A%09rcleanScript%20%3D%20/%5E%5Cs%2A%3C%21%28%3F%3A%5C%5BCDATA%5C%5B%7C--%29%7C%28%3F%3A%5C%5D%5C%5D%7C--%29%3E%5Cs%2A%24/g%3B%0A%0A//%20Prefer%20a%20tbody%20over%20its%20parent%20table%20for%20containing%20new%20rows%0Afunction%20manipulationTarget%28%20elem%2C%20content%20%29%20%7B%0A%09if%20%28%20nodeName%28%20elem%2C%20%22table%22%20%29%20%26%26%0A%09%09nodeName%28%20content.nodeType%20%21%3D%3D%2011%20%3F%20content%20%3A%20content.firstChild%2C%20%22tr%22%20%29%20%29%20%7B%0A%0A%09%09return%20jQuery%28%20elem%20%29.children%28%20%22tbody%22%20%29%5B%200%20%5D%20%7C%7C%20elem%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0A//%20Replace/restore%20the%20type%20attribute%20of%20script%20elements%20for%20safe%20DOM%20manipulation%0Afunction%20disableScript%28%20elem%20%29%20%7B%0A%09elem.type%20%3D%20%28%20elem.getAttribute%28%20%22type%22%20%29%20%21%3D%3D%20null%20%29%20%2B%20%22/%22%20%2B%20elem.type%3B%0A%09return%20elem%3B%0A%7D%0Afunction%20restoreScript%28%20elem%20%29%20%7B%0A%09if%20%28%20%28%20elem.type%20%7C%7C%20%22%22%20%29.slice%28%200%2C%205%20%29%20%3D%3D%3D%20%22true/%22%20%29%20%7B%0A%09%09elem.type%20%3D%20elem.type.slice%28%205%20%29%3B%0A%09%7D%20else%20%7B%0A%09%09elem.removeAttribute%28%20%22type%22%20%29%3B%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0Afunction%20cloneCopyEvent%28%20src%2C%20dest%20%29%20%7B%0A%09var%20i%2C%20l%2C%20type%2C%20pdataOld%2C%20udataOld%2C%20udataCur%2C%20events%3B%0A%0A%09if%20%28%20dest.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%201.%20Copy%20private%20data%3A%20events%2C%20handlers%2C%20etc.%0A%09if%20%28%20dataPriv.hasData%28%20src%20%29%20%29%20%7B%0A%09%09pdataOld%20%3D%20dataPriv.get%28%20src%20%29%3B%0A%09%09events%20%3D%20pdataOld.events%3B%0A%0A%09%09if%20%28%20events%20%29%20%7B%0A%09%09%09dataPriv.remove%28%20dest%2C%20%22handle%20events%22%20%29%3B%0A%0A%09%09%09for%20%28%20type%20in%20events%20%29%20%7B%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20events%5B%20type%20%5D.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09jQuery.event.add%28%20dest%2C%20type%2C%20events%5B%20type%20%5D%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%202.%20Copy%20user%20data%0A%09if%20%28%20dataUser.hasData%28%20src%20%29%20%29%20%7B%0A%09%09udataOld%20%3D%20dataUser.access%28%20src%20%29%3B%0A%09%09udataCur%20%3D%20jQuery.extend%28%20%7B%7D%2C%20udataOld%20%29%3B%0A%0A%09%09dataUser.set%28%20dest%2C%20udataCur%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Fix%20IE%20bugs%2C%20see%20support%20tests%0Afunction%20fixInput%28%20src%2C%20dest%20%29%20%7B%0A%09var%20nodeName%20%3D%20dest.nodeName.toLowerCase%28%29%3B%0A%0A%09//%20Fails%20to%20persist%20the%20checked%20state%20of%20a%20cloned%20checkbox%20or%20radio%20button.%0A%09if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%26%26%20rcheckableType.test%28%20src.type%20%29%20%29%20%7B%0A%09%09dest.checked%20%3D%20src.checked%3B%0A%0A%09//%20Fails%20to%20return%20the%20selected%20option%20to%20the%20default%20selected%20state%20when%20cloning%20options%0A%09%7D%20else%20if%20%28%20nodeName%20%3D%3D%3D%20%22input%22%20%7C%7C%20nodeName%20%3D%3D%3D%20%22textarea%22%20%29%20%7B%0A%09%09dest.defaultValue%20%3D%20src.defaultValue%3B%0A%09%7D%0A%7D%0A%0Afunction%20domManip%28%20collection%2C%20args%2C%20callback%2C%20ignored%20%29%20%7B%0A%0A%09//%20Flatten%20any%20nested%20arrays%0A%09args%20%3D%20flat%28%20args%20%29%3B%0A%0A%09var%20fragment%2C%20first%2C%20scripts%2C%20hasScripts%2C%20node%2C%20doc%2C%0A%09%09i%20%3D%200%2C%0A%09%09l%20%3D%20collection.length%2C%0A%09%09iNoClone%20%3D%20l%20-%201%2C%0A%09%09value%20%3D%20args%5B%200%20%5D%2C%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09//%20We%20can%27t%20cloneNode%20fragments%20that%20contain%20checked%2C%20in%20WebKit%0A%09if%20%28%20valueIsFunction%20%7C%7C%0A%09%09%09%28%20l%20%3E%201%20%26%26%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21support.checkClone%20%26%26%20rchecked.test%28%20value%20%29%20%29%20%29%20%7B%0A%09%09return%20collection.each%28%20function%28%20index%20%29%20%7B%0A%09%09%09var%20self%20%3D%20collection.eq%28%20index%20%29%3B%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09args%5B%200%20%5D%20%3D%20value.call%28%20this%2C%20index%2C%20self.html%28%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09domManip%28%20self%2C%20args%2C%20callback%2C%20ignored%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09if%20%28%20l%20%29%20%7B%0A%09%09fragment%20%3D%20buildFragment%28%20args%2C%20collection%5B%200%20%5D.ownerDocument%2C%20false%2C%20collection%2C%20ignored%20%29%3B%0A%09%09first%20%3D%20fragment.firstChild%3B%0A%0A%09%09if%20%28%20fragment.childNodes.length%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09fragment%20%3D%20first%3B%0A%09%09%7D%0A%0A%09%09//%20Require%20either%20new%20content%20or%20an%20interest%20in%20ignored%20elements%20to%20invoke%20the%20callback%0A%09%09if%20%28%20first%20%7C%7C%20ignored%20%29%20%7B%0A%09%09%09scripts%20%3D%20jQuery.map%28%20getAll%28%20fragment%2C%20%22script%22%20%29%2C%20disableScript%20%29%3B%0A%09%09%09hasScripts%20%3D%20scripts.length%3B%0A%0A%09%09%09//%20Use%20the%20original%20fragment%20for%20the%20last%20item%0A%09%09%09//%20instead%20of%20the%20first%20because%20it%20can%20end%20up%0A%09%09%09//%20being%20emptied%20incorrectly%20in%20certain%20situations%20%28%238070%29.%0A%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09node%20%3D%20fragment%3B%0A%0A%09%09%09%09if%20%28%20i%20%21%3D%3D%20iNoClone%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20jQuery.clone%28%20node%2C%20true%2C%20true%20%29%3B%0A%0A%09%09%09%09%09//%20Keep%20references%20to%20cloned%20scripts%20for%20later%20restoration%0A%09%09%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09%09%09%09//%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09%09%09%09jQuery.merge%28%20scripts%2C%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09callback.call%28%20collection%5B%20i%20%5D%2C%20node%2C%20i%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hasScripts%20%29%20%7B%0A%09%09%09%09doc%20%3D%20scripts%5B%20scripts.length%20-%201%20%5D.ownerDocument%3B%0A%0A%09%09%09%09//%20Reenable%20scripts%0A%09%09%09%09jQuery.map%28%20scripts%2C%20restoreScript%20%29%3B%0A%0A%09%09%09%09//%20Evaluate%20executable%20scripts%20on%20first%20document%20insertion%0A%09%09%09%09for%20%28%20i%20%3D%200%3B%20i%20%3C%20hasScripts%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09node%20%3D%20scripts%5B%20i%20%5D%3B%0A%09%09%09%09%09if%20%28%20rscriptType.test%28%20node.type%20%7C%7C%20%22%22%20%29%20%26%26%0A%09%09%09%09%09%09%21dataPriv.access%28%20node%2C%20%22globalEval%22%20%29%20%26%26%0A%09%09%09%09%09%09jQuery.contains%28%20doc%2C%20node%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09if%20%28%20node.src%20%26%26%20%28%20node.type%20%7C%7C%20%22%22%20%29.toLowerCase%28%29%20%20%21%3D%3D%20%22module%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Optional%20AJAX%20dependency%2C%20but%20won%27t%20run%20scripts%20if%20not%20present%0A%09%09%09%09%09%09%09if%20%28%20jQuery._evalUrl%20%26%26%20%21node.noModule%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery._evalUrl%28%20node.src%2C%20%7B%0A%09%09%09%09%09%09%09%09%09nonce%3A%20node.nonce%20%7C%7C%20node.getAttribute%28%20%22nonce%22%20%29%0A%09%09%09%09%09%09%09%09%7D%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09DOMEval%28%20node.textContent.replace%28%20rcleanScript%2C%20%22%22%20%29%2C%20node%2C%20doc%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20collection%3B%0A%7D%0A%0Afunction%20remove%28%20elem%2C%20selector%2C%20keepData%20%29%20%7B%0A%09var%20node%2C%0A%09%09nodes%20%3D%20selector%20%3F%20jQuery.filter%28%20selector%2C%20elem%20%29%20%3A%20elem%2C%0A%09%09i%20%3D%200%3B%0A%0A%09for%20%28%20%3B%20%28%20node%20%3D%20nodes%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%21keepData%20%26%26%20node.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09jQuery.cleanData%28%20getAll%28%20node%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20node.parentNode%20%29%20%7B%0A%09%09%09if%20%28%20keepData%20%26%26%20isAttached%28%20node%20%29%20%29%20%7B%0A%09%09%09%09setGlobalEval%28%20getAll%28%20node%2C%20%22script%22%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%09node.parentNode.removeChild%28%20node%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20elem%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%09htmlPrefilter%3A%20function%28%20html%20%29%20%7B%0A%09%09return%20html%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20elem%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09var%20i%2C%20l%2C%20srcElements%2C%20destElements%2C%0A%09%09%09clone%20%3D%20elem.cloneNode%28%20true%20%29%2C%0A%09%09%09inPage%20%3D%20isAttached%28%20elem%20%29%3B%0A%0A%09%09//%20Fix%20IE%20cloning%20issues%0A%09%09if%20%28%20%21support.noCloneChecked%20%26%26%20%28%20elem.nodeType%20%3D%3D%3D%201%20%7C%7C%20elem.nodeType%20%3D%3D%3D%2011%20%29%20%26%26%0A%09%09%09%09%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%20eschew%20Sizzle%20here%20for%20performance%20reasons%3A%20https%3A//jsperf.com/getall-vs-sizzle/2%0A%09%09%09destElements%20%3D%20getAll%28%20clone%20%29%3B%0A%09%09%09srcElements%20%3D%20getAll%28%20elem%20%29%3B%0A%0A%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09fixInput%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Copy%20the%20events%20from%20the%20original%20to%20the%20clone%0A%09%09if%20%28%20dataAndEvents%20%29%20%7B%0A%09%09%09if%20%28%20deepDataAndEvents%20%29%20%7B%0A%09%09%09%09srcElements%20%3D%20srcElements%20%7C%7C%20getAll%28%20elem%20%29%3B%0A%09%09%09%09destElements%20%3D%20destElements%20%7C%7C%20getAll%28%20clone%20%29%3B%0A%0A%09%09%09%09for%20%28%20i%20%3D%200%2C%20l%20%3D%20srcElements.length%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09cloneCopyEvent%28%20srcElements%5B%20i%20%5D%2C%20destElements%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09cloneCopyEvent%28%20elem%2C%20clone%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Preserve%20script%20evaluation%20history%0A%09%09destElements%20%3D%20getAll%28%20clone%2C%20%22script%22%20%29%3B%0A%09%09if%20%28%20destElements.length%20%3E%200%20%29%20%7B%0A%09%09%09setGlobalEval%28%20destElements%2C%20%21inPage%20%26%26%20getAll%28%20elem%2C%20%22script%22%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20the%20cloned%20set%0A%09%09return%20clone%3B%0A%09%7D%2C%0A%0A%09cleanData%3A%20function%28%20elems%20%29%20%7B%0A%09%09var%20data%2C%20elem%2C%20type%2C%0A%09%09%09special%20%3D%20jQuery.event.special%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20elems%5B%20i%20%5D%20%29%20%21%3D%3D%20undefined%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20acceptData%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09if%20%28%20%28%20data%20%3D%20elem%5B%20dataPriv.expando%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data.events%20%29%20%7B%0A%09%09%09%09%09%09for%20%28%20type%20in%20data.events%20%29%20%7B%0A%09%09%09%09%09%09%09if%20%28%20special%5B%20type%20%5D%20%29%20%7B%0A%09%09%09%09%09%09%09%09jQuery.event.remove%28%20elem%2C%20type%20%29%3B%0A%0A%09%09%09%09%09%09%09//%20This%20is%20a%20shortcut%20to%20avoid%20jQuery.event.remove%27s%20overhead%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09jQuery.removeEvent%28%20elem%2C%20type%2C%20data.handle%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataPriv.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28%20elem%5B%20dataUser.expando%20%5D%20%29%20%7B%0A%0A%09%09%09%09%09//%20Support%3A%20Chrome%20%3C%3D35%20-%2045%2B%0A%09%09%09%09%09//%20Assign%20undefined%20instead%20of%20using%20delete%2C%20see%20Data%23remove%0A%09%09%09%09%09elem%5B%20dataUser.expando%20%5D%20%3D%20undefined%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09detach%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%2C%20true%20%29%3B%0A%09%7D%2C%0A%0A%09remove%3A%20function%28%20selector%20%29%20%7B%0A%09%09return%20remove%28%20this%2C%20selector%20%29%3B%0A%09%7D%2C%0A%0A%09text%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.text%28%20this%20%29%20%3A%0A%09%09%09%09this.empty%28%29.each%28%20function%28%29%20%7B%0A%09%09%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09%09this.textContent%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09append%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.appendChild%28%20elem%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09prepend%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.nodeType%20%3D%3D%3D%201%20%7C%7C%20this.nodeType%20%3D%3D%3D%2011%20%7C%7C%20this.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09var%20target%20%3D%20manipulationTarget%28%20this%2C%20elem%20%29%3B%0A%09%09%09%09target.insertBefore%28%20elem%2C%20target.firstChild%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09before%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09after%3A%20function%28%29%20%7B%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09if%20%28%20this.parentNode%20%29%20%7B%0A%09%09%09%09this.parentNode.insertBefore%28%20elem%2C%20this.nextSibling%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09empty%3A%20function%28%29%20%7B%0A%09%09var%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20%28%20elem%20%3D%20this%5B%20i%20%5D%20%29%20%21%3D%20null%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Prevent%20memory%20leaks%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%0A%09%09%09%09//%20Remove%20any%20remaining%20nodes%0A%09%09%09%09elem.textContent%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09clone%3A%20function%28%20dataAndEvents%2C%20deepDataAndEvents%20%29%20%7B%0A%09%09dataAndEvents%20%3D%20dataAndEvents%20%3D%3D%20null%20%3F%20false%20%3A%20dataAndEvents%3B%0A%09%09deepDataAndEvents%20%3D%20deepDataAndEvents%20%3D%3D%20null%20%3F%20dataAndEvents%20%3A%20deepDataAndEvents%3B%0A%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09return%20jQuery.clone%28%20this%2C%20dataAndEvents%2C%20deepDataAndEvents%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09html%3A%20function%28%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20value%20%29%20%7B%0A%09%09%09var%20elem%20%3D%20this%5B%200%20%5D%20%7C%7C%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%2C%0A%09%09%09%09l%20%3D%20this.length%3B%0A%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20undefined%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%20elem.innerHTML%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20See%20if%20we%20can%20take%20a%20shortcut%20and%20just%20use%20innerHTML%0A%09%09%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%26%26%20%21rnoInnerhtml.test%28%20value%20%29%20%26%26%0A%09%09%09%09%21wrapMap%5B%20%28%20rtagName.exec%28%20value%20%29%20%7C%7C%20%5B%20%22%22%2C%20%22%22%20%5D%20%29%5B%201%20%5D.toLowerCase%28%29%20%5D%20%29%20%7B%0A%0A%09%09%09%09value%20%3D%20jQuery.htmlPrefilter%28%20value%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09for%20%28%20%3B%20i%20%3C%20l%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09%09elem%20%3D%20this%5B%20i%20%5D%20%7C%7C%20%7B%7D%3B%0A%0A%09%09%09%09%09%09//%20Remove%20element%20nodes%20and%20prevent%20memory%20leaks%0A%09%09%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09%09%09%09%09jQuery.cleanData%28%20getAll%28%20elem%2C%20false%20%29%20%29%3B%0A%09%09%09%09%09%09%09elem.innerHTML%20%3D%20value%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%20%3D%200%3B%0A%0A%09%09%09%09//%20If%20using%20innerHTML%20throws%20an%20exception%2C%20use%20the%20fallback%20method%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09this.empty%28%29.append%28%20value%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20null%2C%20value%2C%20arguments.length%20%29%3B%0A%09%7D%2C%0A%0A%09replaceWith%3A%20function%28%29%20%7B%0A%09%09var%20ignored%20%3D%20%5B%5D%3B%0A%0A%09%09//%20Make%20the%20changes%2C%20replacing%20each%20non-ignored%20context%20element%20with%20the%20new%20content%0A%09%09return%20domManip%28%20this%2C%20arguments%2C%20function%28%20elem%20%29%20%7B%0A%09%09%09var%20parent%20%3D%20this.parentNode%3B%0A%0A%09%09%09if%20%28%20jQuery.inArray%28%20this%2C%20ignored%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09jQuery.cleanData%28%20getAll%28%20this%20%29%20%29%3B%0A%09%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09%09parent.replaceChild%28%20elem%2C%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09//%20Force%20callback%20invocation%0A%09%09%7D%2C%20ignored%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%7B%0A%09appendTo%3A%20%22append%22%2C%0A%09prependTo%3A%20%22prepend%22%2C%0A%09insertBefore%3A%20%22before%22%2C%0A%09insertAfter%3A%20%22after%22%2C%0A%09replaceAll%3A%20%22replaceWith%22%0A%7D%2C%20function%28%20name%2C%20original%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20selector%20%29%20%7B%0A%09%09var%20elems%2C%0A%09%09%09ret%20%3D%20%5B%5D%2C%0A%09%09%09insert%20%3D%20jQuery%28%20selector%20%29%2C%0A%09%09%09last%20%3D%20insert.length%20-%201%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09for%20%28%20%3B%20i%20%3C%3D%20last%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09elems%20%3D%20i%20%3D%3D%3D%20last%20%3F%20this%20%3A%20this.clone%28%20true%20%29%3B%0A%09%09%09jQuery%28%20insert%5B%20i%20%5D%20%29%5B%20original%20%5D%28%20elems%20%29%3B%0A%0A%09%09%09//%20Support%3A%20Android%20%3C%3D4.0%20only%2C%20PhantomJS%201%20only%0A%09%09%09//%20.get%28%29%20because%20push.apply%28_%2C%20arraylike%29%20throws%20on%20ancient%20WebKit%0A%09%09%09push.apply%28%20ret%2C%20elems.get%28%29%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.pushStack%28%20ret%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0Avar%20rnumnonpx%20%3D%20new%20RegExp%28%20%22%5E%28%22%20%2B%20pnum%20%2B%20%22%29%28%3F%21px%29%5Ba-z%25%5D%2B%24%22%2C%20%22i%22%20%29%3B%0A%0Avar%20getStyles%20%3D%20function%28%20elem%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%2C%20Firefox%20%3C%3D30%20%28%2315098%2C%20%2314150%29%0A%09%09//%20IE%20throws%20on%20elements%20created%20in%20popups%0A%09%09//%20FF%20meanwhile%20throws%20on%20frame%20elements%20through%20%22defaultView.getComputedStyle%22%0A%09%09var%20view%20%3D%20elem.ownerDocument.defaultView%3B%0A%0A%09%09if%20%28%20%21view%20%7C%7C%20%21view.opener%20%29%20%7B%0A%09%09%09view%20%3D%20window%3B%0A%09%09%7D%0A%0A%09%09return%20view.getComputedStyle%28%20elem%20%29%3B%0A%09%7D%3B%0A%0Avar%20swap%20%3D%20function%28%20elem%2C%20options%2C%20callback%20%29%20%7B%0A%09var%20ret%2C%20name%2C%0A%09%09old%20%3D%20%7B%7D%3B%0A%0A%09//%20Remember%20the%20old%20values%2C%20and%20insert%20the%20new%20ones%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09old%5B%20name%20%5D%20%3D%20elem.style%5B%20name%20%5D%3B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20options%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09ret%20%3D%20callback.call%28%20elem%20%29%3B%0A%0A%09//%20Revert%20the%20old%20values%0A%09for%20%28%20name%20in%20options%20%29%20%7B%0A%09%09elem.style%5B%20name%20%5D%20%3D%20old%5B%20name%20%5D%3B%0A%09%7D%0A%0A%09return%20ret%3B%0A%7D%3B%0A%0A%0Avar%20rboxStyle%20%3D%20new%20RegExp%28%20cssExpand.join%28%20%22%7C%22%20%29%2C%20%22i%22%20%29%3B%0A%0A%0A%0A%28%20function%28%29%20%7B%0A%0A%09//%20Executing%20both%20pixelPosition%20%26%20boxSizingReliable%20tests%20require%20only%20one%20layout%0A%09//%20so%20they%27re%20executed%20at%20the%20same%20time%20to%20save%20the%20second%20computation.%0A%09function%20computeStyleTests%28%29%20%7B%0A%0A%09%09//%20This%20is%20a%20singleton%2C%20we%20need%20to%20execute%20it%20only%20once%0A%09%09if%20%28%20%21div%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09container.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%3Bwidth%3A60px%3B%22%20%2B%0A%09%09%09%22margin-top%3A1px%3Bpadding%3A0%3Bborder%3A0%22%3B%0A%09%09div.style.cssText%20%3D%0A%09%09%09%22position%3Arelative%3Bdisplay%3Ablock%3Bbox-sizing%3Aborder-box%3Boverflow%3Ascroll%3B%22%20%2B%0A%09%09%09%22margin%3Aauto%3Bborder%3A1px%3Bpadding%3A1px%3B%22%20%2B%0A%09%09%09%22width%3A60%25%3Btop%3A1%25%22%3B%0A%09%09documentElement.appendChild%28%20container%20%29.appendChild%28%20div%20%29%3B%0A%0A%09%09var%20divStyle%20%3D%20window.getComputedStyle%28%20div%20%29%3B%0A%09%09pixelPositionVal%20%3D%20divStyle.top%20%21%3D%3D%20%221%25%22%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Firefox%20%3C%3D3%20-%2044%0A%09%09reliableMarginLeftVal%20%3D%20roundPixelMeasures%28%20divStyle.marginLeft%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09//%20Support%3A%20Android%204.0%20-%204.3%20only%2C%20Safari%20%3C%3D9.1%20-%2010.1%2C%20iOS%20%3C%3D7.0%20-%209.3%0A%09%09//%20Some%20styles%20come%20back%20with%20percentage%20values%2C%20even%20though%20they%20shouldn%27t%0A%09%09div.style.right%20%3D%20%2260%25%22%3B%0A%09%09pixelBoxStylesVal%20%3D%20roundPixelMeasures%28%20divStyle.right%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09%09//%20Detect%20misreporting%20of%20content%20dimensions%20for%20box-sizing%3Aborder-box%20elements%0A%09%09boxSizingReliableVal%20%3D%20roundPixelMeasures%28%20divStyle.width%20%29%20%3D%3D%3D%2036%3B%0A%0A%09%09//%20Support%3A%20IE%209%20only%0A%09%09//%20Detect%20overflow%3Ascroll%20screwiness%20%28gh-3699%29%0A%09%09//%20Support%3A%20Chrome%20%3C%3D64%0A%09%09//%20Don%27t%20get%20tricked%20when%20zoom%20affects%20offsetWidth%20%28gh-4029%29%0A%09%09div.style.position%20%3D%20%22absolute%22%3B%0A%09%09scrollboxSizeVal%20%3D%20roundPixelMeasures%28%20div.offsetWidth%20/%203%20%29%20%3D%3D%3D%2012%3B%0A%0A%09%09documentElement.removeChild%28%20container%20%29%3B%0A%0A%09%09//%20Nullify%20the%20div%20so%20it%20wouldn%27t%20be%20stored%20in%20the%20memory%20and%0A%09%09//%20it%20will%20also%20be%20a%20sign%20that%20checks%20already%20performed%0A%09%09div%20%3D%20null%3B%0A%09%7D%0A%0A%09function%20roundPixelMeasures%28%20measure%20%29%20%7B%0A%09%09return%20Math.round%28%20parseFloat%28%20measure%20%29%20%29%3B%0A%09%7D%0A%0A%09var%20pixelPositionVal%2C%20boxSizingReliableVal%2C%20scrollboxSizeVal%2C%20pixelBoxStylesVal%2C%0A%09%09reliableTrDimensionsVal%2C%20reliableMarginLeftVal%2C%0A%09%09container%20%3D%20document.createElement%28%20%22div%22%20%29%2C%0A%09%09div%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09//%20Finish%20early%20in%20limited%20%28non-browser%29%20environments%0A%09if%20%28%20%21div.style%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09//%20Style%20of%20cloned%20element%20affects%20source%20element%20cloned%20%28%238908%29%0A%09div.style.backgroundClip%20%3D%20%22content-box%22%3B%0A%09div.cloneNode%28%20true%20%29.style.backgroundClip%20%3D%20%22%22%3B%0A%09support.clearCloneStyle%20%3D%20div.style.backgroundClip%20%3D%3D%3D%20%22content-box%22%3B%0A%0A%09jQuery.extend%28%20support%2C%20%7B%0A%09%09boxSizingReliable%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20boxSizingReliableVal%3B%0A%09%09%7D%2C%0A%09%09pixelBoxStyles%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelBoxStylesVal%3B%0A%09%09%7D%2C%0A%09%09pixelPosition%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20pixelPositionVal%3B%0A%09%09%7D%2C%0A%09%09reliableMarginLeft%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20reliableMarginLeftVal%3B%0A%09%09%7D%2C%0A%09%09scrollboxSize%3A%20function%28%29%20%7B%0A%09%09%09computeStyleTests%28%29%3B%0A%09%09%09return%20scrollboxSizeVal%3B%0A%09%09%7D%2C%0A%0A%09%09//%20Support%3A%20IE%209%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Behavior%20in%20IE%209%20is%20more%20subtle%20than%20in%20newer%20versions%20%26%20it%20passes%0A%09%09//%20some%20versions%20of%20this%20test%3B%20make%20sure%20not%20to%20make%20it%20pass%20there%21%0A%09%09reliableTrDimensions%3A%20function%28%29%20%7B%0A%09%09%09var%20table%2C%20tr%2C%20trChild%2C%20trStyle%3B%0A%09%09%09if%20%28%20reliableTrDimensionsVal%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09table%20%3D%20document.createElement%28%20%22table%22%20%29%3B%0A%09%09%09%09tr%20%3D%20document.createElement%28%20%22tr%22%20%29%3B%0A%09%09%09%09trChild%20%3D%20document.createElement%28%20%22div%22%20%29%3B%0A%0A%09%09%09%09table.style.cssText%20%3D%20%22position%3Aabsolute%3Bleft%3A-11111px%22%3B%0A%09%09%09%09tr.style.height%20%3D%20%221px%22%3B%0A%09%09%09%09trChild.style.height%20%3D%20%229px%22%3B%0A%0A%09%09%09%09documentElement%0A%09%09%09%09%09.appendChild%28%20table%20%29%0A%09%09%09%09%09.appendChild%28%20tr%20%29%0A%09%09%09%09%09.appendChild%28%20trChild%20%29%3B%0A%0A%09%09%09%09trStyle%20%3D%20window.getComputedStyle%28%20tr%20%29%3B%0A%09%09%09%09reliableTrDimensionsVal%20%3D%20parseInt%28%20trStyle.height%20%29%20%3E%203%3B%0A%0A%09%09%09%09documentElement.removeChild%28%20table%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20reliableTrDimensionsVal%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%20%29%28%29%3B%0A%0A%0Afunction%20curCSS%28%20elem%2C%20name%2C%20computed%20%29%20%7B%0A%09var%20width%2C%20minWidth%2C%20maxWidth%2C%20ret%2C%0A%0A%09%09//%20Support%3A%20Firefox%2051%2B%0A%09%09//%20Retrieving%20style%20before%20computed%20somehow%0A%09%09//%20fixes%20an%20issue%20with%20getting%20wrong%20values%0A%09%09//%20on%20detached%20elements%0A%09%09style%20%3D%20elem.style%3B%0A%0A%09computed%20%3D%20computed%20%7C%7C%20getStyles%28%20elem%20%29%3B%0A%0A%09//%20getPropertyValue%20is%20needed%20for%3A%0A%09//%20%20%20.css%28%27filter%27%29%20%28IE%209%20only%2C%20%2312537%29%0A%09//%20%20%20.css%28%27--customProperty%29%20%28%233144%29%0A%09if%20%28%20computed%20%29%20%7B%0A%09%09ret%20%3D%20computed.getPropertyValue%28%20name%20%29%20%7C%7C%20computed%5B%20name%20%5D%3B%0A%0A%09%09if%20%28%20ret%20%3D%3D%3D%20%22%22%20%26%26%20%21isAttached%28%20elem%20%29%20%29%20%7B%0A%09%09%09ret%20%3D%20jQuery.style%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20A%20tribute%20to%20the%20%22awesome%20hack%20by%20Dean%20Edwards%22%0A%09%09//%20Android%20Browser%20returns%20percentage%20for%20some%20values%2C%0A%09%09//%20but%20width%20seems%20to%20be%20reliably%20pixels.%0A%09%09//%20This%20is%20against%20the%20CSSOM%20draft%20spec%3A%0A%09%09//%20https%3A//drafts.csswg.org/cssom/%23resolved-values%0A%09%09if%20%28%20%21support.pixelBoxStyles%28%29%20%26%26%20rnumnonpx.test%28%20ret%20%29%20%26%26%20rboxStyle.test%28%20name%20%29%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20original%20values%0A%09%09%09width%20%3D%20style.width%3B%0A%09%09%09minWidth%20%3D%20style.minWidth%3B%0A%09%09%09maxWidth%20%3D%20style.maxWidth%3B%0A%0A%09%09%09//%20Put%20in%20the%20new%20values%20to%20get%20a%20computed%20value%20out%0A%09%09%09style.minWidth%20%3D%20style.maxWidth%20%3D%20style.width%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20computed.width%3B%0A%0A%09%09%09//%20Revert%20the%20changed%20values%0A%09%09%09style.width%20%3D%20width%3B%0A%09%09%09style.minWidth%20%3D%20minWidth%3B%0A%09%09%09style.maxWidth%20%3D%20maxWidth%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%20ret%20%21%3D%3D%20undefined%20%3F%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09//%20IE%20returns%20zIndex%20value%20as%20an%20integer.%0A%09%09ret%20%2B%20%22%22%20%3A%0A%09%09ret%3B%0A%7D%0A%0A%0Afunction%20addGetHookIf%28%20conditionFn%2C%20hookFn%20%29%20%7B%0A%0A%09//%20Define%20the%20hook%2C%20we%27ll%20check%20on%20the%20first%20run%20if%20it%27s%20really%20needed.%0A%09return%20%7B%0A%09%09get%3A%20function%28%29%20%7B%0A%09%09%09if%20%28%20conditionFn%28%29%20%29%20%7B%0A%0A%09%09%09%09//%20Hook%20not%20needed%20%28or%20it%27s%20not%20possible%20to%20use%20it%20due%0A%09%09%09%09//%20to%20missing%20dependency%29%2C%20remove%20it.%0A%09%09%09%09delete%20this.get%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Hook%20needed%3B%20redefine%20it%20so%20that%20the%20support%20test%20is%20not%20executed%20again.%0A%09%09%09return%20%28%20this.get%20%3D%20hookFn%20%29.apply%28%20this%2C%20arguments%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A%0Avar%20cssPrefixes%20%3D%20%5B%20%22Webkit%22%2C%20%22Moz%22%2C%20%22ms%22%20%5D%2C%0A%09emptyStyle%20%3D%20document.createElement%28%20%22div%22%20%29.style%2C%0A%09vendorProps%20%3D%20%7B%7D%3B%0A%0A//%20Return%20a%20vendor-prefixed%20property%20or%20undefined%0Afunction%20vendorPropName%28%20name%20%29%20%7B%0A%0A%09//%20Check%20for%20vendor%20prefixed%20names%0A%09var%20capName%20%3D%20name%5B%200%20%5D.toUpperCase%28%29%20%2B%20name.slice%28%201%20%29%2C%0A%09%09i%20%3D%20cssPrefixes.length%3B%0A%0A%09while%20%28%20i--%20%29%20%7B%0A%09%09name%20%3D%20cssPrefixes%5B%20i%20%5D%20%2B%20capName%3B%0A%09%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09%09return%20name%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0A//%20Return%20a%20potentially-mapped%20jQuery.cssProps%20or%20vendor%20prefixed%20property%0Afunction%20finalPropName%28%20name%20%29%20%7B%0A%09var%20final%20%3D%20jQuery.cssProps%5B%20name%20%5D%20%7C%7C%20vendorProps%5B%20name%20%5D%3B%0A%0A%09if%20%28%20final%20%29%20%7B%0A%09%09return%20final%3B%0A%09%7D%0A%09if%20%28%20name%20in%20emptyStyle%20%29%20%7B%0A%09%09return%20name%3B%0A%09%7D%0A%09return%20vendorProps%5B%20name%20%5D%20%3D%20vendorPropName%28%20name%20%29%20%7C%7C%20name%3B%0A%7D%0A%0A%0Avar%0A%0A%09//%20Swappable%20if%20display%20is%20none%20or%20starts%20with%20table%0A%09//%20except%20%22table%22%2C%20%22table-cell%22%2C%20or%20%22table-caption%22%0A%09//%20See%20here%20for%20display%20values%3A%20https%3A//developer.mozilla.org/en-US/docs/CSS/display%0A%09rdisplayswap%20%3D%20/%5E%28none%7Ctable%28%3F%21-c%5Bea%5D%29.%2B%29/%2C%0A%09rcustomProp%20%3D%20/%5E--/%2C%0A%09cssShow%20%3D%20%7B%20position%3A%20%22absolute%22%2C%20visibility%3A%20%22hidden%22%2C%20display%3A%20%22block%22%20%7D%2C%0A%09cssNormalTransform%20%3D%20%7B%0A%09%09letterSpacing%3A%20%220%22%2C%0A%09%09fontWeight%3A%20%22400%22%0A%09%7D%3B%0A%0Afunction%20setPositiveNumber%28%20_elem%2C%20value%2C%20subtract%20%29%20%7B%0A%0A%09//%20Any%20relative%20%28%2B/-%29%20values%20have%20already%20been%0A%09//%20normalized%20at%20this%20point%0A%09var%20matches%20%3D%20rcssNum.exec%28%20value%20%29%3B%0A%09return%20matches%20%3F%0A%0A%09%09//%20Guard%20against%20undefined%20%22subtract%22%2C%20e.g.%2C%20when%20used%20as%20in%20cssHooks%0A%09%09Math.max%28%200%2C%20matches%5B%202%20%5D%20-%20%28%20subtract%20%7C%7C%200%20%29%20%29%20%2B%20%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%3A%0A%09%09value%3B%0A%7D%0A%0Afunction%20boxModelAdjustment%28%20elem%2C%20dimension%2C%20box%2C%20isBorderBox%2C%20styles%2C%20computedVal%20%29%20%7B%0A%09var%20i%20%3D%20dimension%20%3D%3D%3D%20%22width%22%20%3F%201%20%3A%200%2C%0A%09%09extra%20%3D%200%2C%0A%09%09delta%20%3D%200%3B%0A%0A%09//%20Adjustment%20may%20not%20be%20necessary%0A%09if%20%28%20box%20%3D%3D%3D%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%20%29%20%7B%0A%09%09return%200%3B%0A%09%7D%0A%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20%29%20%7B%0A%0A%09%09//%20Both%20box%20models%20exclude%20margin%0A%09%09if%20%28%20box%20%3D%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20box%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20content-box%2C%20we%27re%20seeking%20%22padding%22%20or%20%22border%22%20or%20%22margin%22%0A%09%09if%20%28%20%21isBorderBox%20%29%20%7B%0A%0A%09%09%09//%20Add%20padding%0A%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20For%20%22border%22%20or%20%22margin%22%2C%20add%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22padding%22%20%29%20%7B%0A%09%09%09%09delta%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%0A%09%09%09//%20But%20still%20keep%20track%20of%20it%20otherwise%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09extra%20%2B%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09//%20If%20we%20get%20here%20with%20a%20border-box%20%28content%20%2B%20padding%20%2B%20border%29%2C%20we%27re%20seeking%20%22content%22%20or%0A%09%09//%20%22padding%22%20or%20%22margin%22%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20For%20%22content%22%2C%20subtract%20padding%0A%09%09%09if%20%28%20box%20%3D%3D%3D%20%22content%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22padding%22%20%2B%20cssExpand%5B%20i%20%5D%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20For%20%22content%22%20or%20%22padding%22%2C%20subtract%20border%0A%09%09%09if%20%28%20box%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09%09%09delta%20-%3D%20jQuery.css%28%20elem%2C%20%22border%22%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20%22Width%22%2C%20true%2C%20styles%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Account%20for%20positive%20content-box%20scroll%20gutter%20when%20requested%20by%20providing%20computedVal%0A%09if%20%28%20%21isBorderBox%20%26%26%20computedVal%20%3E%3D%200%20%29%20%7B%0A%0A%09%09//%20offsetWidth/offsetHeight%20is%20a%20rounded%20sum%20of%20content%2C%20padding%2C%20scroll%20gutter%2C%20and%20border%0A%09%09//%20Assuming%20integer%20scroll%20gutter%2C%20subtract%20the%20rest%20and%20round%20down%0A%09%09delta%20%2B%3D%20Math.max%28%200%2C%20Math.ceil%28%0A%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09computedVal%20-%0A%09%09%09delta%20-%0A%09%09%09extra%20-%0A%09%09%090.5%0A%0A%09%09//%20If%20offsetWidth/offsetHeight%20is%20unknown%2C%20then%20we%20can%27t%20determine%20content-box%20scroll%20gutter%0A%09%09//%20Use%20an%20explicit%20zero%20to%20avoid%20NaN%20%28gh-3964%29%0A%09%09%29%20%29%20%7C%7C%200%3B%0A%09%7D%0A%0A%09return%20delta%3B%0A%7D%0A%0Afunction%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%20%7B%0A%0A%09//%20Start%20with%20computed%20style%0A%09var%20styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-4322%29.%0A%09%09//%20Fake%20content-box%20until%20we%20know%20it%27s%20needed%20to%20know%20the%20true%20value.%0A%09%09boxSizingNeeded%20%3D%20%21support.boxSizingReliable%28%29%20%7C%7C%20extra%2C%0A%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09valueIsBorderBox%20%3D%20isBorderBox%2C%0A%0A%09%09val%20%3D%20curCSS%28%20elem%2C%20dimension%2C%20styles%20%29%2C%0A%09%09offsetProp%20%3D%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%3B%0A%0A%09//%20Support%3A%20Firefox%20%3C%3D54%0A%09//%20Return%20a%20confounding%20non-pixel%20value%20or%20feign%20ignorance%2C%20as%20appropriate.%0A%09if%20%28%20rnumnonpx.test%28%20val%20%29%20%29%20%7B%0A%09%09if%20%28%20%21extra%20%29%20%7B%0A%09%09%09return%20val%3B%0A%09%09%7D%0A%09%09val%20%3D%20%22auto%22%3B%0A%09%7D%0A%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20Use%20offsetWidth/offsetHeight%20for%20when%20box%20sizing%20is%20unreliable.%0A%09//%20In%20those%20cases%2C%20the%20computed%20value%20can%20be%20trusted%20to%20be%20border-box.%0A%09if%20%28%20%28%20%21support.boxSizingReliable%28%29%20%26%26%20isBorderBox%20%7C%7C%0A%0A%09%09//%20Support%3A%20IE%2010%20-%2011%2B%2C%20Edge%2015%20-%2018%2B%0A%09%09//%20IE/Edge%20misreport%20%60getComputedStyle%60%20of%20table%20rows%20with%20width/height%0A%09%09//%20set%20in%20CSS%20while%20%60offset%2A%60%20properties%20report%20correct%20values.%0A%09%09//%20Interestingly%2C%20in%20some%20cases%20IE%209%20doesn%27t%20suffer%20from%20this%20issue.%0A%09%09%21support.reliableTrDimensions%28%29%20%26%26%20nodeName%28%20elem%2C%20%22tr%22%20%29%20%7C%7C%0A%0A%09%09//%20Fall%20back%20to%20offsetWidth/offsetHeight%20when%20value%20is%20%22auto%22%0A%09%09//%20This%20happens%20for%20inline%20elements%20with%20no%20explicit%20setting%20%28gh-3571%29%0A%09%09val%20%3D%3D%3D%20%22auto%22%20%7C%7C%0A%0A%09%09//%20Support%3A%20Android%20%3C%3D4.1%20-%204.3%20only%0A%09%09//%20Also%20use%20offsetWidth/offsetHeight%20for%20misreported%20inline%20dimensions%20%28gh-3602%29%0A%09%09%21parseFloat%28%20val%20%29%20%26%26%20jQuery.css%28%20elem%2C%20%22display%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22inline%22%20%29%20%26%26%0A%0A%09%09//%20Make%20sure%20the%20element%20is%20visible%20%26%20connected%0A%09%09elem.getClientRects%28%29.length%20%29%20%7B%0A%0A%09%09isBorderBox%20%3D%20jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%3B%0A%0A%09%09//%20Where%20available%2C%20offsetWidth/offsetHeight%20approximate%20border%20box%20dimensions.%0A%09%09//%20Where%20not%20available%20%28e.g.%2C%20SVG%29%2C%20assume%20unreliable%20box-sizing%20and%20interpret%20the%0A%09%09//%20retrieved%20value%20as%20a%20content%20box%20dimension.%0A%09%09valueIsBorderBox%20%3D%20offsetProp%20in%20elem%3B%0A%09%09if%20%28%20valueIsBorderBox%20%29%20%7B%0A%09%09%09val%20%3D%20elem%5B%20offsetProp%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20%22%22%20and%20auto%0A%09val%20%3D%20parseFloat%28%20val%20%29%20%7C%7C%200%3B%0A%0A%09//%20Adjust%20for%20the%20element%27s%20box%20model%0A%09return%20%28%20val%20%2B%0A%09%09boxModelAdjustment%28%0A%09%09%09elem%2C%0A%09%09%09dimension%2C%0A%09%09%09extra%20%7C%7C%20%28%20isBorderBox%20%3F%20%22border%22%20%3A%20%22content%22%20%29%2C%0A%09%09%09valueIsBorderBox%2C%0A%09%09%09styles%2C%0A%0A%09%09%09//%20Provide%20the%20current%20computed%20size%20to%20request%20scroll%20gutter%20calculation%20%28gh-3589%29%0A%09%09%09val%0A%09%09%29%0A%09%29%20%2B%20%22px%22%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Add%20in%20style%20property%20hooks%20for%20overriding%20the%20default%0A%09//%20behavior%20of%20getting%20and%20setting%20a%20style%20property%0A%09cssHooks%3A%20%7B%0A%09%09opacity%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09%09//%20We%20should%20always%20get%20a%20number%20back%20from%20opacity%0A%09%09%09%09%09var%20ret%20%3D%20curCSS%28%20elem%2C%20%22opacity%22%20%29%3B%0A%09%09%09%09%09return%20ret%20%3D%3D%3D%20%22%22%20%3F%20%221%22%20%3A%20ret%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Don%27t%20automatically%20add%20%22px%22%20to%20these%20possibly-unitless%20properties%0A%09cssNumber%3A%20%7B%0A%09%09%22animationIterationCount%22%3A%20true%2C%0A%09%09%22columnCount%22%3A%20true%2C%0A%09%09%22fillOpacity%22%3A%20true%2C%0A%09%09%22flexGrow%22%3A%20true%2C%0A%09%09%22flexShrink%22%3A%20true%2C%0A%09%09%22fontWeight%22%3A%20true%2C%0A%09%09%22gridArea%22%3A%20true%2C%0A%09%09%22gridColumn%22%3A%20true%2C%0A%09%09%22gridColumnEnd%22%3A%20true%2C%0A%09%09%22gridColumnStart%22%3A%20true%2C%0A%09%09%22gridRow%22%3A%20true%2C%0A%09%09%22gridRowEnd%22%3A%20true%2C%0A%09%09%22gridRowStart%22%3A%20true%2C%0A%09%09%22lineHeight%22%3A%20true%2C%0A%09%09%22opacity%22%3A%20true%2C%0A%09%09%22order%22%3A%20true%2C%0A%09%09%22orphans%22%3A%20true%2C%0A%09%09%22widows%22%3A%20true%2C%0A%09%09%22zIndex%22%3A%20true%2C%0A%09%09%22zoom%22%3A%20true%0A%09%7D%2C%0A%0A%09//%20Add%20in%20properties%20whose%20names%20you%20wish%20to%20fix%20before%0A%09//%20setting%20or%20getting%20the%20value%0A%09cssProps%3A%20%7B%7D%2C%0A%0A%09//%20Get%20and%20set%20the%20style%20property%20on%20a%20DOM%20Node%0A%09style%3A%20function%28%20elem%2C%20name%2C%20value%2C%20extra%20%29%20%7B%0A%0A%09%09//%20Don%27t%20set%20styles%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20%21elem%20%7C%7C%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%7C%7C%20%21elem.style%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name%0A%09%09var%20ret%2C%20type%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%2C%0A%09%09%09style%20%3D%20elem.style%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20query%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Gets%20hook%20for%20the%20prefixed%20version%2C%20then%20unprefixed%20version%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20Check%20if%20we%27re%20setting%20a%20value%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09type%20%3D%20typeof%20value%3B%0A%0A%09%09%09//%20Convert%20%22%2B%3D%22%20or%20%22-%3D%22%20to%20relative%20numbers%20%28%237345%29%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22string%22%20%26%26%20%28%20ret%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%20ret%5B%201%20%5D%20%29%20%7B%0A%09%09%09%09value%20%3D%20adjustCSS%28%20elem%2C%20name%2C%20ret%20%29%3B%0A%0A%09%09%09%09//%20Fixes%20bug%20%239237%0A%09%09%09%09type%20%3D%20%22number%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Make%20sure%20that%20null%20and%20NaN%20values%20aren%27t%20set%20%28%237116%29%0A%09%09%09if%20%28%20value%20%3D%3D%20null%20%7C%7C%20value%20%21%3D%3D%20value%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20number%20was%20passed%20in%2C%20add%20the%20unit%20%28except%20for%20certain%20CSS%20properties%29%0A%09%09%09//%20The%20isCustomProp%20check%20can%20be%20removed%20in%20jQuery%204.0%20when%20we%20only%20auto-append%0A%09%09%09//%20%22px%22%20to%20a%20few%20hardcoded%20values.%0A%09%09%09if%20%28%20type%20%3D%3D%3D%20%22number%22%20%26%26%20%21isCustomProp%20%29%20%7B%0A%09%09%09%09value%20%2B%3D%20ret%20%26%26%20ret%5B%203%20%5D%20%7C%7C%20%28%20jQuery.cssNumber%5B%20origName%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20background-%2A%20props%20affect%20original%20clone%27s%20values%0A%09%09%09if%20%28%20%21support.clearCloneStyle%20%26%26%20value%20%3D%3D%3D%20%22%22%20%26%26%20name.indexOf%28%20%22background%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09%09style%5B%20name%20%5D%20%3D%20%22inherit%22%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%2C%20use%20that%20value%2C%20otherwise%20just%20set%20the%20specified%20value%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%0A%09%09%09%09%28%20value%20%3D%20hooks.set%28%20elem%2C%20value%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09if%20%28%20isCustomProp%20%29%20%7B%0A%09%09%09%09%09style.setProperty%28%20name%2C%20value%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09style%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%7D%20else%20%7B%0A%0A%09%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20non-computed%20value%20from%20there%0A%09%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20false%2C%20extra%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Otherwise%20just%20get%20the%20value%20from%20the%20style%20object%0A%09%09%09return%20style%5B%20name%20%5D%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09css%3A%20function%28%20elem%2C%20name%2C%20extra%2C%20styles%20%29%20%7B%0A%09%09var%20val%2C%20num%2C%20hooks%2C%0A%09%09%09origName%20%3D%20camelCase%28%20name%20%29%2C%0A%09%09%09isCustomProp%20%3D%20rcustomProp.test%28%20name%20%29%3B%0A%0A%09%09//%20Make%20sure%20that%20we%27re%20working%20with%20the%20right%20name.%20We%20don%27t%0A%09%09//%20want%20to%20modify%20the%20value%20if%20it%20is%20a%20CSS%20custom%20property%0A%09%09//%20since%20they%20are%20user-defined.%0A%09%09if%20%28%20%21isCustomProp%20%29%20%7B%0A%09%09%09name%20%3D%20finalPropName%28%20origName%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Try%20prefixed%20name%20followed%20by%20the%20unprefixed%20name%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%20%7C%7C%20jQuery.cssHooks%5B%20origName%20%5D%3B%0A%0A%09%09//%20If%20a%20hook%20was%20provided%20get%20the%20computed%20value%20from%20there%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%29%20%7B%0A%09%09%09val%20%3D%20hooks.get%28%20elem%2C%20true%2C%20extra%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Otherwise%2C%20if%20a%20way%20to%20get%20the%20computed%20value%20exists%2C%20use%20that%0A%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09val%20%3D%20curCSS%28%20elem%2C%20name%2C%20styles%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Convert%20%22normal%22%20to%20computed%20value%0A%09%09if%20%28%20val%20%3D%3D%3D%20%22normal%22%20%26%26%20name%20in%20cssNormalTransform%20%29%20%7B%0A%09%09%09val%20%3D%20cssNormalTransform%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09//%20Make%20numeric%20if%20forced%20or%20a%20qualifier%20was%20provided%20and%20val%20looks%20numeric%0A%09%09if%20%28%20extra%20%3D%3D%3D%20%22%22%20%7C%7C%20extra%20%29%20%7B%0A%09%09%09num%20%3D%20parseFloat%28%20val%20%29%3B%0A%09%09%09return%20extra%20%3D%3D%3D%20true%20%7C%7C%20isFinite%28%20num%20%29%20%3F%20num%20%7C%7C%200%20%3A%20val%3B%0A%09%09%7D%0A%0A%09%09return%20val%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22height%22%2C%20%22width%22%20%5D%2C%20function%28%20_i%2C%20dimension%20%29%20%7B%0A%09jQuery.cssHooks%5B%20dimension%20%5D%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%2C%20computed%2C%20extra%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%0A%09%09%09%09//%20Certain%20elements%20can%20have%20dimension%20info%20if%20we%20invisibly%20show%20them%0A%09%09%09%09//%20but%20it%20must%20have%20a%20current%20display%20style%20that%20would%20benefit%0A%09%09%09%09return%20rdisplayswap.test%28%20jQuery.css%28%20elem%2C%20%22display%22%20%29%20%29%20%26%26%0A%0A%09%09%09%09%09//%20Support%3A%20Safari%208%2B%0A%09%09%09%09%09//%20Table%20columns%20in%20Safari%20have%20non-zero%20offsetWidth%20%26%20zero%0A%09%09%09%09%09//%20getBoundingClientRect%28%29.width%20unless%20display%20is%20changed.%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09%09%09%09//%20Running%20getBoundingClientRect%20on%20a%20disconnected%20node%0A%09%09%09%09%09//%20in%20IE%20throws%20an%20error.%0A%09%09%09%09%09%28%20%21elem.getClientRects%28%29.length%20%7C%7C%20%21elem.getBoundingClientRect%28%29.width%20%29%20%3F%0A%09%09%09%09%09%09swap%28%20elem%2C%20cssShow%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09%09return%20getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%09%09%09%7D%20%29%20%3A%0A%09%09%09%09%09%09getWidthOrHeight%28%20elem%2C%20dimension%2C%20extra%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09set%3A%20function%28%20elem%2C%20value%2C%20extra%20%29%20%7B%0A%09%09%09var%20matches%2C%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%2C%0A%0A%09%09%09%09//%20Only%20read%20styles.position%20if%20the%20test%20has%20a%20chance%20to%20fail%0A%09%09%09%09//%20to%20avoid%20forcing%20a%20reflow.%0A%09%09%09%09scrollboxSizeBuggy%20%3D%20%21support.scrollboxSize%28%29%20%26%26%0A%09%09%09%09%09styles.position%20%3D%3D%3D%20%22absolute%22%2C%0A%0A%09%09%09%09//%20To%20avoid%20forcing%20a%20reflow%2C%20only%20fetch%20boxSizing%20if%20we%20need%20it%20%28gh-3991%29%0A%09%09%09%09boxSizingNeeded%20%3D%20scrollboxSizeBuggy%20%7C%7C%20extra%2C%0A%09%09%09%09isBorderBox%20%3D%20boxSizingNeeded%20%26%26%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20%22boxSizing%22%2C%20false%2C%20styles%20%29%20%3D%3D%3D%20%22border-box%22%2C%0A%09%09%09%09subtract%20%3D%20extra%20%3F%0A%09%09%09%09%09boxModelAdjustment%28%0A%09%09%09%09%09%09elem%2C%0A%09%09%09%09%09%09dimension%2C%0A%09%09%09%09%09%09extra%2C%0A%09%09%09%09%09%09isBorderBox%2C%0A%09%09%09%09%09%09styles%0A%09%09%09%09%09%29%20%3A%0A%09%09%09%09%090%3B%0A%0A%09%09%09//%20Account%20for%20unreliable%20border-box%20dimensions%20by%20comparing%20offset%2A%20to%20computed%20and%0A%09%09%09//%20faking%20a%20content-box%20to%20get%20border%20and%20padding%20%28gh-3699%29%0A%09%09%09if%20%28%20isBorderBox%20%26%26%20scrollboxSizeBuggy%20%29%20%7B%0A%09%09%09%09subtract%20-%3D%20Math.ceil%28%0A%09%09%09%09%09elem%5B%20%22offset%22%20%2B%20dimension%5B%200%20%5D.toUpperCase%28%29%20%2B%20dimension.slice%28%201%20%29%20%5D%20-%0A%09%09%09%09%09parseFloat%28%20styles%5B%20dimension%20%5D%20%29%20-%0A%09%09%09%09%09boxModelAdjustment%28%20elem%2C%20dimension%2C%20%22border%22%2C%20false%2C%20styles%20%29%20-%0A%09%09%09%09%090.5%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20to%20pixels%20if%20value%20adjustment%20is%20needed%0A%09%09%09if%20%28%20subtract%20%26%26%20%28%20matches%20%3D%20rcssNum.exec%28%20value%20%29%20%29%20%26%26%0A%09%09%09%09%28%20matches%5B%203%20%5D%20%7C%7C%20%22px%22%20%29%20%21%3D%3D%20%22px%22%20%29%20%7B%0A%0A%09%09%09%09elem.style%5B%20dimension%20%5D%20%3D%20value%3B%0A%09%09%09%09value%20%3D%20jQuery.css%28%20elem%2C%20dimension%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20setPositiveNumber%28%20elem%2C%20value%2C%20subtract%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.cssHooks.marginLeft%20%3D%20addGetHookIf%28%20support.reliableMarginLeft%2C%0A%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09return%20%28%20parseFloat%28%20curCSS%28%20elem%2C%20%22marginLeft%22%20%29%20%29%20%7C%7C%0A%09%09%09%09elem.getBoundingClientRect%28%29.left%20-%0A%09%09%09%09%09swap%28%20elem%2C%20%7B%20marginLeft%3A%200%20%7D%2C%20function%28%29%20%7B%0A%09%09%09%09%09%09return%20elem.getBoundingClientRect%28%29.left%3B%0A%09%09%09%09%09%7D%20%29%0A%09%09%09%09%29%20%2B%20%22px%22%3B%0A%09%09%7D%0A%09%7D%0A%29%3B%0A%0A//%20These%20hooks%20are%20used%20by%20animate%20to%20expand%20properties%0AjQuery.each%28%20%7B%0A%09margin%3A%20%22%22%2C%0A%09padding%3A%20%22%22%2C%0A%09border%3A%20%22Width%22%0A%7D%2C%20function%28%20prefix%2C%20suffix%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D%20%3D%20%7B%0A%09%09expand%3A%20function%28%20value%20%29%20%7B%0A%09%09%09var%20i%20%3D%200%2C%0A%09%09%09%09expanded%20%3D%20%7B%7D%2C%0A%0A%09%09%09%09//%20Assumes%20a%20single%20number%20if%20not%20a%20string%0A%09%09%09%09parts%20%3D%20typeof%20value%20%3D%3D%3D%20%22string%22%20%3F%20value.split%28%20%22%20%22%20%29%20%3A%20%5B%20value%20%5D%3B%0A%0A%09%09%09for%20%28%20%3B%20i%20%3C%204%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09expanded%5B%20prefix%20%2B%20cssExpand%5B%20i%20%5D%20%2B%20suffix%20%5D%20%3D%0A%09%09%09%09%09parts%5B%20i%20%5D%20%7C%7C%20parts%5B%20i%20-%202%20%5D%20%7C%7C%20parts%5B%200%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20expanded%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09if%20%28%20prefix%20%21%3D%3D%20%22margin%22%20%29%20%7B%0A%09%09jQuery.cssHooks%5B%20prefix%20%2B%20suffix%20%5D.set%20%3D%20setPositiveNumber%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09css%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09%09var%20styles%2C%20len%2C%0A%09%09%09%09map%20%3D%20%7B%7D%2C%0A%09%09%09%09i%20%3D%200%3B%0A%0A%09%09%09if%20%28%20Array.isArray%28%20name%20%29%20%29%20%7B%0A%09%09%09%09styles%20%3D%20getStyles%28%20elem%20%29%3B%0A%09%09%09%09len%20%3D%20name.length%3B%0A%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20len%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09map%5B%20name%5B%20i%20%5D%20%5D%20%3D%20jQuery.css%28%20elem%2C%20name%5B%20i%20%5D%2C%20false%2C%20styles%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20map%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20value%20%21%3D%3D%20undefined%20%3F%0A%09%09%09%09jQuery.style%28%20elem%2C%20name%2C%20value%20%29%20%3A%0A%09%09%09%09jQuery.css%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Afunction%20Tween%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%20%7B%0A%09return%20new%20Tween.prototype.init%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%20%29%3B%0A%7D%0AjQuery.Tween%20%3D%20Tween%3B%0A%0ATween.prototype%20%3D%20%7B%0A%09constructor%3A%20Tween%2C%0A%09init%3A%20function%28%20elem%2C%20options%2C%20prop%2C%20end%2C%20easing%2C%20unit%20%29%20%7B%0A%09%09this.elem%20%3D%20elem%3B%0A%09%09this.prop%20%3D%20prop%3B%0A%09%09this.easing%20%3D%20easing%20%7C%7C%20jQuery.easing._default%3B%0A%09%09this.options%20%3D%20options%3B%0A%09%09this.start%20%3D%20this.now%20%3D%20this.cur%28%29%3B%0A%09%09this.end%20%3D%20end%3B%0A%09%09this.unit%20%3D%20unit%20%7C%7C%20%28%20jQuery.cssNumber%5B%20prop%20%5D%20%3F%20%22%22%20%3A%20%22px%22%20%29%3B%0A%09%7D%2C%0A%09cur%3A%20function%28%29%20%7B%0A%09%09var%20hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09return%20hooks%20%26%26%20hooks.get%20%3F%0A%09%09%09hooks.get%28%20this%20%29%20%3A%0A%09%09%09Tween.propHooks._default.get%28%20this%20%29%3B%0A%09%7D%2C%0A%09run%3A%20function%28%20percent%20%29%20%7B%0A%09%09var%20eased%2C%0A%09%09%09hooks%20%3D%20Tween.propHooks%5B%20this.prop%20%5D%3B%0A%0A%09%09if%20%28%20this.options.duration%20%29%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20jQuery.easing%5B%20this.easing%20%5D%28%0A%09%09%09%09percent%2C%20this.options.duration%20%2A%20percent%2C%200%2C%201%2C%20this.options.duration%0A%09%09%09%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09this.pos%20%3D%20eased%20%3D%20percent%3B%0A%09%09%7D%0A%09%09this.now%20%3D%20%28%20this.end%20-%20this.start%20%29%20%2A%20eased%20%2B%20this.start%3B%0A%0A%09%09if%20%28%20this.options.step%20%29%20%7B%0A%09%09%09this.options.step.call%28%20this.elem%2C%20this.now%2C%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20hooks.set%20%29%20%7B%0A%09%09%09hooks.set%28%20this%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Tween.propHooks._default.set%28%20this%20%29%3B%0A%09%09%7D%0A%09%09return%20this%3B%0A%09%7D%0A%7D%3B%0A%0ATween.prototype.init.prototype%20%3D%20Tween.prototype%3B%0A%0ATween.propHooks%20%3D%20%7B%0A%09_default%3A%20%7B%0A%09%09get%3A%20function%28%20tween%20%29%20%7B%0A%09%09%09var%20result%3B%0A%0A%09%09%09//%20Use%20a%20property%20on%20the%20element%20directly%20when%20it%20is%20not%20a%20DOM%20element%2C%0A%09%09%09//%20or%20when%20there%20is%20no%20matching%20style%20property%20that%20exists.%0A%09%09%09if%20%28%20tween.elem.nodeType%20%21%3D%3D%201%20%7C%7C%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%21%3D%20null%20%26%26%20tween.elem.style%5B%20tween.prop%20%5D%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20tween.elem%5B%20tween.prop%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Passing%20an%20empty%20string%20as%20a%203rd%20parameter%20to%20.css%20will%20automatically%0A%09%09%09//%20attempt%20a%20parseFloat%20and%20fallback%20to%20a%20string%20if%20the%20parse%20fails.%0A%09%09%09//%20Simple%20values%20such%20as%20%2210px%22%20are%20parsed%20to%20Float%3B%0A%09%09%09//%20complex%20values%20such%20as%20%22rotate%281rad%29%22%20are%20returned%20as-is.%0A%09%09%09result%20%3D%20jQuery.css%28%20tween.elem%2C%20tween.prop%2C%20%22%22%20%29%3B%0A%0A%09%09%09//%20Empty%20strings%2C%20null%2C%20undefined%20and%20%22auto%22%20are%20converted%20to%200.%0A%09%09%09return%20%21result%20%7C%7C%20result%20%3D%3D%3D%20%22auto%22%20%3F%200%20%3A%20result%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20tween%20%29%20%7B%0A%0A%09%09%09//%20Use%20step%20hook%20for%20back%20compat.%0A%09%09%09//%20Use%20cssHook%20if%20its%20there.%0A%09%09%09//%20Use%20.style%20if%20available%20and%20use%20plain%20properties%20where%20available.%0A%09%09%09if%20%28%20jQuery.fx.step%5B%20tween.prop%20%5D%20%29%20%7B%0A%09%09%09%09jQuery.fx.step%5B%20tween.prop%20%5D%28%20tween%20%29%3B%0A%09%09%09%7D%20else%20if%20%28%20tween.elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%0A%09%09%09%09%09jQuery.cssHooks%5B%20tween.prop%20%5D%20%7C%7C%0A%09%09%09%09%09tween.elem.style%5B%20finalPropName%28%20tween.prop%20%29%20%5D%20%21%3D%20null%20%29%20%29%20%7B%0A%09%09%09%09jQuery.style%28%20tween.elem%2C%20tween.prop%2C%20tween.now%20%2B%20tween.unit%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0A//%20Support%3A%20IE%20%3C%3D9%20only%0A//%20Panic%20based%20approach%20to%20setting%20things%20on%20disconnected%20nodes%0ATween.propHooks.scrollTop%20%3D%20Tween.propHooks.scrollLeft%20%3D%20%7B%0A%09set%3A%20function%28%20tween%20%29%20%7B%0A%09%09if%20%28%20tween.elem.nodeType%20%26%26%20tween.elem.parentNode%20%29%20%7B%0A%09%09%09tween.elem%5B%20tween.prop%20%5D%20%3D%20tween.now%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.easing%20%3D%20%7B%0A%09linear%3A%20function%28%20p%20%29%20%7B%0A%09%09return%20p%3B%0A%09%7D%2C%0A%09swing%3A%20function%28%20p%20%29%20%7B%0A%09%09return%200.5%20-%20Math.cos%28%20p%20%2A%20Math.PI%20%29%20/%202%3B%0A%09%7D%2C%0A%09_default%3A%20%22swing%22%0A%7D%3B%0A%0AjQuery.fx%20%3D%20Tween.prototype.init%3B%0A%0A//%20Back%20compat%20%3C1.8%20extension%20point%0AjQuery.fx.step%20%3D%20%7B%7D%3B%0A%0A%0A%0A%0Avar%0A%09fxNow%2C%20inProgress%2C%0A%09rfxtypes%20%3D%20/%5E%28%3F%3Atoggle%7Cshow%7Chide%29%24/%2C%0A%09rrun%20%3D%20/queueHooks%24/%3B%0A%0Afunction%20schedule%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09if%20%28%20document.hidden%20%3D%3D%3D%20false%20%26%26%20window.requestAnimationFrame%20%29%20%7B%0A%09%09%09window.requestAnimationFrame%28%20schedule%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09window.setTimeout%28%20schedule%2C%20jQuery.fx.interval%20%29%3B%0A%09%09%7D%0A%0A%09%09jQuery.fx.tick%28%29%3B%0A%09%7D%0A%7D%0A%0A//%20Animations%20created%20synchronously%20will%20run%20synchronously%0Afunction%20createFxNow%28%29%20%7B%0A%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09fxNow%20%3D%20undefined%3B%0A%09%7D%20%29%3B%0A%09return%20%28%20fxNow%20%3D%20Date.now%28%29%20%29%3B%0A%7D%0A%0A//%20Generate%20parameters%20to%20create%20a%20standard%20animation%0Afunction%20genFx%28%20type%2C%20includeWidth%20%29%20%7B%0A%09var%20which%2C%0A%09%09i%20%3D%200%2C%0A%09%09attrs%20%3D%20%7B%20height%3A%20type%20%7D%3B%0A%0A%09//%20If%20we%20include%20width%2C%20step%20value%20is%201%20to%20do%20all%20cssExpand%20values%2C%0A%09//%20otherwise%20step%20value%20is%202%20to%20skip%20over%20Left%20and%20Right%0A%09includeWidth%20%3D%20includeWidth%20%3F%201%20%3A%200%3B%0A%09for%20%28%20%3B%20i%20%3C%204%3B%20i%20%2B%3D%202%20-%20includeWidth%20%29%20%7B%0A%09%09which%20%3D%20cssExpand%5B%20i%20%5D%3B%0A%09%09attrs%5B%20%22margin%22%20%2B%20which%20%5D%20%3D%20attrs%5B%20%22padding%22%20%2B%20which%20%5D%20%3D%20type%3B%0A%09%7D%0A%0A%09if%20%28%20includeWidth%20%29%20%7B%0A%09%09attrs.opacity%20%3D%20attrs.width%20%3D%20type%3B%0A%09%7D%0A%0A%09return%20attrs%3B%0A%7D%0A%0Afunction%20createTween%28%20value%2C%20prop%2C%20animation%20%29%20%7B%0A%09var%20tween%2C%0A%09%09collection%20%3D%20%28%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%20%29.concat%28%20Animation.tweeners%5B%20%22%2A%22%20%5D%20%29%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20collection.length%3B%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09if%20%28%20%28%20tween%20%3D%20collection%5B%20index%20%5D.call%28%20animation%2C%20prop%2C%20value%20%29%20%29%20%29%20%7B%0A%0A%09%09%09//%20We%27re%20done%20with%20this%20property%0A%09%09%09return%20tween%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20defaultPrefilter%28%20elem%2C%20props%2C%20opts%20%29%20%7B%0A%09var%20prop%2C%20value%2C%20toggle%2C%20hooks%2C%20oldfire%2C%20propTween%2C%20restoreDisplay%2C%20display%2C%0A%09%09isBox%20%3D%20%22width%22%20in%20props%20%7C%7C%20%22height%22%20in%20props%2C%0A%09%09anim%20%3D%20this%2C%0A%09%09orig%20%3D%20%7B%7D%2C%0A%09%09style%20%3D%20elem.style%2C%0A%09%09hidden%20%3D%20elem.nodeType%20%26%26%20isHiddenWithinTree%28%20elem%20%29%2C%0A%09%09dataShow%20%3D%20dataPriv.get%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%0A%09//%20Queue-skipping%20animations%20hijack%20the%20fx%20hooks%0A%09if%20%28%20%21opts.queue%20%29%20%7B%0A%09%09hooks%20%3D%20jQuery._queueHooks%28%20elem%2C%20%22fx%22%20%29%3B%0A%09%09if%20%28%20hooks.unqueued%20%3D%3D%20null%20%29%20%7B%0A%09%09%09hooks.unqueued%20%3D%200%3B%0A%09%09%09oldfire%20%3D%20hooks.empty.fire%3B%0A%09%09%09hooks.empty.fire%20%3D%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20%21hooks.unqueued%20%29%20%7B%0A%09%09%09%09%09oldfire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%7D%0A%09%09hooks.unqueued%2B%2B%3B%0A%0A%09%09anim.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Ensure%20the%20complete%20handler%20is%20called%20before%20this%20completes%0A%09%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09%09hooks.unqueued--%3B%0A%09%09%09%09if%20%28%20%21jQuery.queue%28%20elem%2C%20%22fx%22%20%29.length%20%29%20%7B%0A%09%09%09%09%09hooks.empty.fire%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Detect%20show/hide%20animations%0A%09for%20%28%20prop%20in%20props%20%29%20%7B%0A%09%09value%20%3D%20props%5B%20prop%20%5D%3B%0A%09%09if%20%28%20rfxtypes.test%28%20value%20%29%20%29%20%7B%0A%09%09%09delete%20props%5B%20prop%20%5D%3B%0A%09%09%09toggle%20%3D%20toggle%20%7C%7C%20value%20%3D%3D%3D%20%22toggle%22%3B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20%28%20hidden%20%3F%20%22hide%22%20%3A%20%22show%22%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Pretend%20to%20be%20hidden%20if%20this%20is%20a%20%22show%22%20and%0A%09%09%09%09//%20there%20is%20still%20data%20from%20a%20stopped%20show/hide%0A%09%09%09%09if%20%28%20value%20%3D%3D%3D%20%22show%22%20%26%26%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20true%3B%0A%0A%09%09%09%09//%20Ignore%20all%20other%20no-op%20show/hide%20data%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09continue%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09orig%5B%20prop%20%5D%20%3D%20dataShow%20%26%26%20dataShow%5B%20prop%20%5D%20%7C%7C%20jQuery.style%28%20elem%2C%20prop%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Bail%20out%20if%20this%20is%20a%20no-op%20like%20.hide%28%29.hide%28%29%0A%09propTween%20%3D%20%21jQuery.isEmptyObject%28%20props%20%29%3B%0A%09if%20%28%20%21propTween%20%26%26%20jQuery.isEmptyObject%28%20orig%20%29%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09//%20Restrict%20%22overflow%22%20and%20%22display%22%20styles%20during%20box%20animations%0A%09if%20%28%20isBox%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09//%20Record%20all%203%20overflow%20attributes%20because%20IE%20does%20not%20infer%20the%20shorthand%0A%09%09//%20from%20identically-valued%20overflowX%20and%20overflowY%20and%20Edge%20just%20mirrors%0A%09%09//%20the%20overflowX%20value%20there.%0A%09%09opts.overflow%20%3D%20%5B%20style.overflow%2C%20style.overflowX%2C%20style.overflowY%20%5D%3B%0A%0A%09%09//%20Identify%20a%20display%20type%2C%20preferring%20old%20show/hide%20data%20over%20the%20CSS%20cascade%0A%09%09restoreDisplay%20%3D%20dataShow%20%26%26%20dataShow.display%3B%0A%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09restoreDisplay%20%3D%20dataPriv.get%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%7D%0A%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%09%09%09if%20%28%20restoreDisplay%20%29%20%7B%0A%09%09%09%09display%20%3D%20restoreDisplay%3B%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Get%20nonempty%20value%28s%29%20by%20temporarily%20forcing%20visibility%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%09restoreDisplay%20%3D%20elem.style.display%20%7C%7C%20restoreDisplay%3B%0A%09%09%09%09display%20%3D%20jQuery.css%28%20elem%2C%20%22display%22%20%29%3B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Animate%20inline%20elements%20as%20inline-block%0A%09%09if%20%28%20display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline-block%22%20%26%26%20restoreDisplay%20%21%3D%20null%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22float%22%20%29%20%3D%3D%3D%20%22none%22%20%29%20%7B%0A%0A%09%09%09%09//%20Restore%20the%20original%20display%20value%20at%20the%20end%20of%20pure%20show/hide%20animations%0A%09%09%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09%09%09anim.done%28%20function%28%29%20%7B%0A%09%09%09%09%09%09style.display%20%3D%20restoreDisplay%3B%0A%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09if%20%28%20restoreDisplay%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09display%20%3D%20style.display%3B%0A%09%09%09%09%09%09restoreDisplay%20%3D%20display%20%3D%3D%3D%20%22none%22%20%3F%20%22%22%20%3A%20display%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09style.display%20%3D%20%22inline-block%22%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20opts.overflow%20%29%20%7B%0A%09%09style.overflow%20%3D%20%22hidden%22%3B%0A%09%09anim.always%28%20function%28%29%20%7B%0A%09%09%09style.overflow%20%3D%20opts.overflow%5B%200%20%5D%3B%0A%09%09%09style.overflowX%20%3D%20opts.overflow%5B%201%20%5D%3B%0A%09%09%09style.overflowY%20%3D%20opts.overflow%5B%202%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09//%20Implement%20show/hide%20animations%0A%09propTween%20%3D%20false%3B%0A%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%0A%09%09//%20General%20show/hide%20setup%20for%20this%20element%20animation%0A%09%09if%20%28%20%21propTween%20%29%20%7B%0A%09%09%09if%20%28%20dataShow%20%29%20%7B%0A%09%09%09%09if%20%28%20%22hidden%22%20in%20dataShow%20%29%20%7B%0A%09%09%09%09%09hidden%20%3D%20dataShow.hidden%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09dataShow%20%3D%20dataPriv.access%28%20elem%2C%20%22fxshow%22%2C%20%7B%20display%3A%20restoreDisplay%20%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Store%20hidden/visible%20for%20toggle%20so%20%60.stop%28%29.toggle%28%29%60%20%22reverses%22%0A%09%09%09if%20%28%20toggle%20%29%20%7B%0A%09%09%09%09dataShow.hidden%20%3D%20%21hidden%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Show%20elements%20before%20animating%20them%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09showHide%28%20%5B%20elem%20%5D%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09/%2A%20eslint-disable%20no-loop-func%20%2A/%0A%0A%09%09%09anim.done%28%20function%28%29%20%7B%0A%0A%09%09%09/%2A%20eslint-enable%20no-loop-func%20%2A/%0A%0A%09%09%09%09//%20The%20final%20step%20of%20a%20%22hide%22%20animation%20is%20actually%20hiding%20the%20element%0A%09%09%09%09if%20%28%20%21hidden%20%29%20%7B%0A%09%09%09%09%09showHide%28%20%5B%20elem%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.remove%28%20elem%2C%20%22fxshow%22%20%29%3B%0A%09%09%09%09for%20%28%20prop%20in%20orig%20%29%20%7B%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20prop%2C%20orig%5B%20prop%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Per-property%20setup%0A%09%09propTween%20%3D%20createTween%28%20hidden%20%3F%20dataShow%5B%20prop%20%5D%20%3A%200%2C%20prop%2C%20anim%20%29%3B%0A%09%09if%20%28%20%21%28%20prop%20in%20dataShow%20%29%20%29%20%7B%0A%09%09%09dataShow%5B%20prop%20%5D%20%3D%20propTween.start%3B%0A%09%09%09if%20%28%20hidden%20%29%20%7B%0A%09%09%09%09propTween.end%20%3D%20propTween.start%3B%0A%09%09%09%09propTween.start%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20propFilter%28%20props%2C%20specialEasing%20%29%20%7B%0A%09var%20index%2C%20name%2C%20easing%2C%20value%2C%20hooks%3B%0A%0A%09//%20camelCase%2C%20specialEasing%20and%20expand%20cssHook%20pass%0A%09for%20%28%20index%20in%20props%20%29%20%7B%0A%09%09name%20%3D%20camelCase%28%20index%20%29%3B%0A%09%09easing%20%3D%20specialEasing%5B%20name%20%5D%3B%0A%09%09value%20%3D%20props%5B%20index%20%5D%3B%0A%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09easing%20%3D%20value%5B%201%20%5D%3B%0A%09%09%09value%20%3D%20props%5B%20index%20%5D%20%3D%20value%5B%200%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20index%20%21%3D%3D%20name%20%29%20%7B%0A%09%09%09props%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09delete%20props%5B%20index%20%5D%3B%0A%09%09%7D%0A%0A%09%09hooks%20%3D%20jQuery.cssHooks%5B%20name%20%5D%3B%0A%09%09if%20%28%20hooks%20%26%26%20%22expand%22%20in%20hooks%20%29%20%7B%0A%09%09%09value%20%3D%20hooks.expand%28%20value%20%29%3B%0A%09%09%09delete%20props%5B%20name%20%5D%3B%0A%0A%09%09%09//%20Not%20quite%20%24.extend%2C%20this%20won%27t%20overwrite%20existing%20keys.%0A%09%09%09//%20Reusing%20%27index%27%20because%20we%20have%20the%20correct%20%22name%22%0A%09%09%09for%20%28%20index%20in%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21%28%20index%20in%20props%20%29%20%29%20%7B%0A%09%09%09%09%09props%5B%20index%20%5D%20%3D%20value%5B%20index%20%5D%3B%0A%09%09%09%09%09specialEasing%5B%20index%20%5D%20%3D%20easing%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20else%20%7B%0A%09%09%09specialEasing%5B%20name%20%5D%20%3D%20easing%3B%0A%09%09%7D%0A%09%7D%0A%7D%0A%0Afunction%20Animation%28%20elem%2C%20properties%2C%20options%20%29%20%7B%0A%09var%20result%2C%0A%09%09stopped%2C%0A%09%09index%20%3D%200%2C%0A%09%09length%20%3D%20Animation.prefilters.length%2C%0A%09%09deferred%20%3D%20jQuery.Deferred%28%29.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Don%27t%20match%20elem%20in%20the%20%3Aanimated%20selector%0A%09%09%09delete%20tick.elem%3B%0A%09%09%7D%20%29%2C%0A%09%09tick%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09var%20currentTime%20%3D%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09%09remaining%20%3D%20Math.max%28%200%2C%20animation.startTime%20%2B%20animation.duration%20-%20currentTime%20%29%2C%0A%0A%09%09%09%09//%20Support%3A%20Android%202.3%20only%0A%09%09%09%09//%20Archaic%20crash%20bug%20won%27t%20allow%20us%20to%20use%20%601%20-%20%28%200.5%20%7C%7C%200%20%29%60%20%28%2312497%29%0A%09%09%09%09temp%20%3D%20remaining%20/%20animation.duration%20%7C%7C%200%2C%0A%09%09%09%09percent%20%3D%201%20-%20temp%2C%0A%09%09%09%09index%20%3D%200%2C%0A%09%09%09%09length%20%3D%20animation.tweens.length%3B%0A%0A%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%20percent%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%20percent%2C%20remaining%20%5D%20%29%3B%0A%0A%09%09%09//%20If%20there%27s%20more%20to%20do%2C%20yield%0A%09%09%09if%20%28%20percent%20%3C%201%20%26%26%20length%20%29%20%7B%0A%09%09%09%09return%20remaining%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20this%20was%20an%20empty%20animation%2C%20synthesize%20a%20final%20progress%20notification%0A%09%09%09if%20%28%20%21length%20%29%20%7B%0A%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Resolve%20the%20animation%20and%20report%20its%20conclusion%0A%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%20%5D%20%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09animation%20%3D%20deferred.promise%28%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09props%3A%20jQuery.extend%28%20%7B%7D%2C%20properties%20%29%2C%0A%09%09%09opts%3A%20jQuery.extend%28%20true%2C%20%7B%0A%09%09%09%09specialEasing%3A%20%7B%7D%2C%0A%09%09%09%09easing%3A%20jQuery.easing._default%0A%09%09%09%7D%2C%20options%20%29%2C%0A%09%09%09originalProperties%3A%20properties%2C%0A%09%09%09originalOptions%3A%20options%2C%0A%09%09%09startTime%3A%20fxNow%20%7C%7C%20createFxNow%28%29%2C%0A%09%09%09duration%3A%20options.duration%2C%0A%09%09%09tweens%3A%20%5B%5D%2C%0A%09%09%09createTween%3A%20function%28%20prop%2C%20end%20%29%20%7B%0A%09%09%09%09var%20tween%20%3D%20jQuery.Tween%28%20elem%2C%20animation.opts%2C%20prop%2C%20end%2C%0A%09%09%09%09%09%09animation.opts.specialEasing%5B%20prop%20%5D%20%7C%7C%20animation.opts.easing%20%29%3B%0A%09%09%09%09animation.tweens.push%28%20tween%20%29%3B%0A%09%09%09%09return%20tween%3B%0A%09%09%09%7D%2C%0A%09%09%09stop%3A%20function%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09var%20index%20%3D%200%2C%0A%0A%09%09%09%09%09//%20If%20we%20are%20going%20to%20the%20end%2C%20we%20want%20to%20run%20all%20the%20tweens%0A%09%09%09%09%09//%20otherwise%20we%20skip%20this%20part%0A%09%09%09%09%09length%20%3D%20gotoEnd%20%3F%20animation.tweens.length%20%3A%200%3B%0A%09%09%09%09if%20%28%20stopped%20%29%20%7B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%09stopped%20%3D%20true%3B%0A%09%09%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09%09animation.tweens%5B%20index%20%5D.run%28%201%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Resolve%20when%20we%20played%20the%20last%20frame%3B%20otherwise%2C%20reject%0A%09%09%09%09if%20%28%20gotoEnd%20%29%20%7B%0A%09%09%09%09%09deferred.notifyWith%28%20elem%2C%20%5B%20animation%2C%201%2C%200%20%5D%20%29%3B%0A%09%09%09%09%09deferred.resolveWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09deferred.rejectWith%28%20elem%2C%20%5B%20animation%2C%20gotoEnd%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20this%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%2C%0A%09%09props%20%3D%20animation.props%3B%0A%0A%09propFilter%28%20props%2C%20animation.opts.specialEasing%20%29%3B%0A%0A%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09result%20%3D%20Animation.prefilters%5B%20index%20%5D.call%28%20animation%2C%20elem%2C%20props%2C%20animation.opts%20%29%3B%0A%09%09if%20%28%20result%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20result.stop%20%29%20%29%20%7B%0A%09%09%09%09jQuery._queueHooks%28%20animation.elem%2C%20animation.opts.queue%20%29.stop%20%3D%0A%09%09%09%09%09result.stop.bind%28%20result%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20result%3B%0A%09%09%7D%0A%09%7D%0A%0A%09jQuery.map%28%20props%2C%20createTween%2C%20animation%20%29%3B%0A%0A%09if%20%28%20isFunction%28%20animation.opts.start%20%29%20%29%20%7B%0A%09%09animation.opts.start.call%28%20elem%2C%20animation%20%29%3B%0A%09%7D%0A%0A%09//%20Attach%20callbacks%20from%20options%0A%09animation%0A%09%09.progress%28%20animation.opts.progress%20%29%0A%09%09.done%28%20animation.opts.done%2C%20animation.opts.complete%20%29%0A%09%09.fail%28%20animation.opts.fail%20%29%0A%09%09.always%28%20animation.opts.always%20%29%3B%0A%0A%09jQuery.fx.timer%28%0A%09%09jQuery.extend%28%20tick%2C%20%7B%0A%09%09%09elem%3A%20elem%2C%0A%09%09%09anim%3A%20animation%2C%0A%09%09%09queue%3A%20animation.opts.queue%0A%09%09%7D%20%29%0A%09%29%3B%0A%0A%09return%20animation%3B%0A%7D%0A%0AjQuery.Animation%20%3D%20jQuery.extend%28%20Animation%2C%20%7B%0A%0A%09tweeners%3A%20%7B%0A%09%09%22%2A%22%3A%20%5B%20function%28%20prop%2C%20value%20%29%20%7B%0A%09%09%09var%20tween%20%3D%20this.createTween%28%20prop%2C%20value%20%29%3B%0A%09%09%09adjustCSS%28%20tween.elem%2C%20prop%2C%20rcssNum.exec%28%20value%20%29%2C%20tween%20%29%3B%0A%09%09%09return%20tween%3B%0A%09%09%7D%20%5D%0A%09%7D%2C%0A%0A%09tweener%3A%20function%28%20props%2C%20callback%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20props%20%29%20%29%20%7B%0A%09%09%09callback%20%3D%20props%3B%0A%09%09%09props%20%3D%20%5B%20%22%2A%22%20%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09props%20%3D%20props.match%28%20rnothtmlwhite%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20prop%2C%0A%09%09%09index%20%3D%200%2C%0A%09%09%09length%20%3D%20props.length%3B%0A%0A%09%09for%20%28%20%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09prop%20%3D%20props%5B%20index%20%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D%20%3D%20Animation.tweeners%5B%20prop%20%5D%20%7C%7C%20%5B%5D%3B%0A%09%09%09Animation.tweeners%5B%20prop%20%5D.unshift%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09prefilters%3A%20%5B%20defaultPrefilter%20%5D%2C%0A%0A%09prefilter%3A%20function%28%20callback%2C%20prepend%20%29%20%7B%0A%09%09if%20%28%20prepend%20%29%20%7B%0A%09%09%09Animation.prefilters.unshift%28%20callback%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09Animation.prefilters.push%28%20callback%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.speed%20%3D%20function%28%20speed%2C%20easing%2C%20fn%20%29%20%7B%0A%09var%20opt%20%3D%20speed%20%26%26%20typeof%20speed%20%3D%3D%3D%20%22object%22%20%3F%20jQuery.extend%28%20%7B%7D%2C%20speed%20%29%20%3A%20%7B%0A%09%09complete%3A%20fn%20%7C%7C%20%21fn%20%26%26%20easing%20%7C%7C%0A%09%09%09isFunction%28%20speed%20%29%20%26%26%20speed%2C%0A%09%09duration%3A%20speed%2C%0A%09%09easing%3A%20fn%20%26%26%20easing%20%7C%7C%20easing%20%26%26%20%21isFunction%28%20easing%20%29%20%26%26%20easing%0A%09%7D%3B%0A%0A%09//%20Go%20to%20the%20end%20state%20if%20fx%20are%20off%0A%09if%20%28%20jQuery.fx.off%20%29%20%7B%0A%09%09opt.duration%20%3D%200%3B%0A%0A%09%7D%20else%20%7B%0A%09%09if%20%28%20typeof%20opt.duration%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09if%20%28%20opt.duration%20in%20jQuery.fx.speeds%20%29%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds%5B%20opt.duration%20%5D%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09opt.duration%20%3D%20jQuery.fx.speeds._default%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Normalize%20opt.queue%20-%20true/undefined/null%20-%3E%20%22fx%22%0A%09if%20%28%20opt.queue%20%3D%3D%20null%20%7C%7C%20opt.queue%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09opt.queue%20%3D%20%22fx%22%3B%0A%09%7D%0A%0A%09//%20Queueing%0A%09opt.old%20%3D%20opt.complete%3B%0A%0A%09opt.complete%20%3D%20function%28%29%20%7B%0A%09%09if%20%28%20isFunction%28%20opt.old%20%29%20%29%20%7B%0A%09%09%09opt.old.call%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20opt.queue%20%29%20%7B%0A%09%09%09jQuery.dequeue%28%20this%2C%20opt.queue%20%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%0A%09return%20opt%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09fadeTo%3A%20function%28%20speed%2C%20to%2C%20easing%2C%20callback%20%29%20%7B%0A%0A%09%09//%20Show%20any%20hidden%20elements%20after%20setting%20opacity%20to%200%0A%09%09return%20this.filter%28%20isHiddenWithinTree%20%29.css%28%20%22opacity%22%2C%200%20%29.show%28%29%0A%0A%09%09%09//%20Animate%20to%20the%20value%20specified%0A%09%09%09.end%28%29.animate%28%20%7B%20opacity%3A%20to%20%7D%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%2C%0A%09animate%3A%20function%28%20prop%2C%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09var%20empty%20%3D%20jQuery.isEmptyObject%28%20prop%20%29%2C%0A%09%09%09optall%20%3D%20jQuery.speed%28%20speed%2C%20easing%2C%20callback%20%29%2C%0A%09%09%09doAnimation%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Operate%20on%20a%20copy%20of%20prop%20so%20per-property%20easing%20won%27t%20be%20lost%0A%09%09%09%09var%20anim%20%3D%20Animation%28%20this%2C%20jQuery.extend%28%20%7B%7D%2C%20prop%20%29%2C%20optall%20%29%3B%0A%0A%09%09%09%09//%20Empty%20animations%2C%20or%20finishing%20resolves%20immediately%0A%09%09%09%09if%20%28%20empty%20%7C%7C%20dataPriv.get%28%20this%2C%20%22finish%22%20%29%20%29%20%7B%0A%09%09%09%09%09anim.stop%28%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%09doAnimation.finish%20%3D%20doAnimation%3B%0A%0A%09%09return%20empty%20%7C%7C%20optall.queue%20%3D%3D%3D%20false%20%3F%0A%09%09%09this.each%28%20doAnimation%20%29%20%3A%0A%09%09%09this.queue%28%20optall.queue%2C%20doAnimation%20%29%3B%0A%09%7D%2C%0A%09stop%3A%20function%28%20type%2C%20clearQueue%2C%20gotoEnd%20%29%20%7B%0A%09%09var%20stopQueue%20%3D%20function%28%20hooks%20%29%20%7B%0A%09%09%09var%20stop%20%3D%20hooks.stop%3B%0A%09%09%09delete%20hooks.stop%3B%0A%09%09%09stop%28%20gotoEnd%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09if%20%28%20typeof%20type%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09gotoEnd%20%3D%20clearQueue%3B%0A%09%09%09clearQueue%20%3D%20type%3B%0A%09%09%09type%20%3D%20undefined%3B%0A%09%09%7D%0A%09%09if%20%28%20clearQueue%20%29%20%7B%0A%09%09%09this.queue%28%20type%20%7C%7C%20%22fx%22%2C%20%5B%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20dequeue%20%3D%20true%2C%0A%09%09%09%09index%20%3D%20type%20%21%3D%20null%20%26%26%20type%20%2B%20%22queueHooks%22%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%3B%0A%0A%09%09%09if%20%28%20index%20%29%20%7B%0A%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%29%20%7B%0A%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09for%20%28%20index%20in%20data%20%29%20%7B%0A%09%09%09%09%09if%20%28%20data%5B%20index%20%5D%20%26%26%20data%5B%20index%20%5D.stop%20%26%26%20rrun.test%28%20index%20%29%20%29%20%7B%0A%09%09%09%09%09%09stopQueue%28%20data%5B%20index%20%5D%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%0A%09%09%09%09%09%28%20type%20%3D%3D%20null%20%7C%7C%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%29%20%7B%0A%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20gotoEnd%20%29%3B%0A%09%09%09%09%09dequeue%20%3D%20false%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Start%20the%20next%20in%20the%20queue%20if%20the%20last%20step%20wasn%27t%20forced.%0A%09%09%09//%20Timers%20currently%20will%20call%20their%20complete%20callbacks%2C%20which%0A%09%09%09//%20will%20dequeue%20but%20only%20if%20they%20were%20gotoEnd.%0A%09%09%09if%20%28%20dequeue%20%7C%7C%20%21gotoEnd%20%29%20%7B%0A%09%09%09%09jQuery.dequeue%28%20this%2C%20type%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09finish%3A%20function%28%20type%20%29%20%7B%0A%09%09if%20%28%20type%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%09%09%7D%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20index%2C%0A%09%09%09%09data%20%3D%20dataPriv.get%28%20this%20%29%2C%0A%09%09%09%09queue%20%3D%20data%5B%20type%20%2B%20%22queue%22%20%5D%2C%0A%09%09%09%09hooks%20%3D%20data%5B%20type%20%2B%20%22queueHooks%22%20%5D%2C%0A%09%09%09%09timers%20%3D%20jQuery.timers%2C%0A%09%09%09%09length%20%3D%20queue%20%3F%20queue.length%20%3A%200%3B%0A%0A%09%09%09//%20Enable%20finishing%20flag%20on%20private%20data%0A%09%09%09data.finish%20%3D%20true%3B%0A%0A%09%09%09//%20Empty%20the%20queue%20first%0A%09%09%09jQuery.queue%28%20this%2C%20type%2C%20%5B%5D%20%29%3B%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20hooks.stop%20%29%20%7B%0A%09%09%09%09hooks.stop.call%28%20this%2C%20true%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20active%20animations%2C%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%20timers.length%3B%20index--%3B%20%29%20%7B%0A%09%09%09%09if%20%28%20timers%5B%20index%20%5D.elem%20%3D%3D%3D%20this%20%26%26%20timers%5B%20index%20%5D.queue%20%3D%3D%3D%20type%20%29%20%7B%0A%09%09%09%09%09timers%5B%20index%20%5D.anim.stop%28%20true%20%29%3B%0A%09%09%09%09%09timers.splice%28%20index%2C%201%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Look%20for%20any%20animations%20in%20the%20old%20queue%20and%20finish%20them%0A%09%09%09for%20%28%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%20%29%20%7B%0A%09%09%09%09if%20%28%20queue%5B%20index%20%5D%20%26%26%20queue%5B%20index%20%5D.finish%20%29%20%7B%0A%09%09%09%09%09queue%5B%20index%20%5D.finish.call%28%20this%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Turn%20off%20finishing%20flag%0A%09%09%09delete%20data.finish%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22toggle%22%2C%20%22show%22%2C%20%22hide%22%20%5D%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20cssFn%20%3D%20jQuery.fn%5B%20name%20%5D%3B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20speed%20%3D%3D%20null%20%7C%7C%20typeof%20speed%20%3D%3D%3D%20%22boolean%22%20%3F%0A%09%09%09cssFn.apply%28%20this%2C%20arguments%20%29%20%3A%0A%09%09%09this.animate%28%20genFx%28%20name%2C%20true%20%29%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Generate%20shortcuts%20for%20custom%20animations%0AjQuery.each%28%20%7B%0A%09slideDown%3A%20genFx%28%20%22show%22%20%29%2C%0A%09slideUp%3A%20genFx%28%20%22hide%22%20%29%2C%0A%09slideToggle%3A%20genFx%28%20%22toggle%22%20%29%2C%0A%09fadeIn%3A%20%7B%20opacity%3A%20%22show%22%20%7D%2C%0A%09fadeOut%3A%20%7B%20opacity%3A%20%22hide%22%20%7D%2C%0A%09fadeToggle%3A%20%7B%20opacity%3A%20%22toggle%22%20%7D%0A%7D%2C%20function%28%20name%2C%20props%20%29%20%7B%0A%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20speed%2C%20easing%2C%20callback%20%29%20%7B%0A%09%09return%20this.animate%28%20props%2C%20speed%2C%20easing%2C%20callback%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.timers%20%3D%20%5B%5D%3B%0AjQuery.fx.tick%20%3D%20function%28%29%20%7B%0A%09var%20timer%2C%0A%09%09i%20%3D%200%2C%0A%09%09timers%20%3D%20jQuery.timers%3B%0A%0A%09fxNow%20%3D%20Date.now%28%29%3B%0A%0A%09for%20%28%20%3B%20i%20%3C%20timers.length%3B%20i%2B%2B%20%29%20%7B%0A%09%09timer%20%3D%20timers%5B%20i%20%5D%3B%0A%0A%09%09//%20Run%20the%20timer%20and%20safely%20remove%20it%20when%20done%20%28allowing%20for%20external%20removal%29%0A%09%09if%20%28%20%21timer%28%29%20%26%26%20timers%5B%20i%20%5D%20%3D%3D%3D%20timer%20%29%20%7B%0A%09%09%09timers.splice%28%20i--%2C%201%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09if%20%28%20%21timers.length%20%29%20%7B%0A%09%09jQuery.fx.stop%28%29%3B%0A%09%7D%0A%09fxNow%20%3D%20undefined%3B%0A%7D%3B%0A%0AjQuery.fx.timer%20%3D%20function%28%20timer%20%29%20%7B%0A%09jQuery.timers.push%28%20timer%20%29%3B%0A%09jQuery.fx.start%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.interval%20%3D%2013%3B%0AjQuery.fx.start%20%3D%20function%28%29%20%7B%0A%09if%20%28%20inProgress%20%29%20%7B%0A%09%09return%3B%0A%09%7D%0A%0A%09inProgress%20%3D%20true%3B%0A%09schedule%28%29%3B%0A%7D%3B%0A%0AjQuery.fx.stop%20%3D%20function%28%29%20%7B%0A%09inProgress%20%3D%20null%3B%0A%7D%3B%0A%0AjQuery.fx.speeds%20%3D%20%7B%0A%09slow%3A%20600%2C%0A%09fast%3A%20200%2C%0A%0A%09//%20Default%20speed%0A%09_default%3A%20400%0A%7D%3B%0A%0A%0A//%20Based%20off%20of%20the%20plugin%20by%20Clint%20Helfers%2C%20with%20permission.%0A//%20https%3A//web.archive.org/web/20100324014747/http%3A//blindsignals.com/index.php/2009/07/jquery-delay/%0AjQuery.fn.delay%20%3D%20function%28%20time%2C%20type%20%29%20%7B%0A%09time%20%3D%20jQuery.fx%20%3F%20jQuery.fx.speeds%5B%20time%20%5D%20%7C%7C%20time%20%3A%20time%3B%0A%09type%20%3D%20type%20%7C%7C%20%22fx%22%3B%0A%0A%09return%20this.queue%28%20type%2C%20function%28%20next%2C%20hooks%20%29%20%7B%0A%09%09var%20timeout%20%3D%20window.setTimeout%28%20next%2C%20time%20%29%3B%0A%09%09hooks.stop%20%3D%20function%28%29%20%7B%0A%09%09%09window.clearTimeout%28%20timeout%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0A%28%20function%28%29%20%7B%0A%09var%20input%20%3D%20document.createElement%28%20%22input%22%20%29%2C%0A%09%09select%20%3D%20document.createElement%28%20%22select%22%20%29%2C%0A%09%09opt%20%3D%20select.appendChild%28%20document.createElement%28%20%22option%22%20%29%20%29%3B%0A%0A%09input.type%20%3D%20%22checkbox%22%3B%0A%0A%09//%20Support%3A%20Android%20%3C%3D4.3%20only%0A%09//%20Default%20value%20for%20a%20checkbox%20should%20be%20%22on%22%0A%09support.checkOn%20%3D%20input.value%20%21%3D%3D%20%22%22%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20Must%20access%20selectedIndex%20to%20make%20default%20options%20select%0A%09support.optSelected%20%3D%20opt.selected%3B%0A%0A%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09//%20An%20input%20loses%20its%20value%20after%20becoming%20a%20radio%0A%09input%20%3D%20document.createElement%28%20%22input%22%20%29%3B%0A%09input.value%20%3D%20%22t%22%3B%0A%09input.type%20%3D%20%22radio%22%3B%0A%09support.radioValue%20%3D%20input.value%20%3D%3D%3D%20%22t%22%3B%0A%7D%20%29%28%29%3B%0A%0A%0Avar%20boolHook%2C%0A%09attrHandle%20%3D%20jQuery.expr.attrHandle%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09attr%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.attr%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.removeAttr%28%20this%2C%20name%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09attr%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20attributes%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Fallback%20to%20prop%20when%20attributes%20are%20not%20supported%0A%09%09if%20%28%20typeof%20elem.getAttribute%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09%09%09return%20jQuery.prop%28%20elem%2C%20name%2C%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Attribute%20hooks%20are%20determined%20by%20the%20lowercase%20version%0A%09%09//%20Grab%20necessary%20hook%20if%20one%20is%20defined%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%09%09%09hooks%20%3D%20jQuery.attrHooks%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%0A%09%09%09%09%28%20jQuery.expr.match.bool.test%28%20name%20%29%20%3F%20boolHook%20%3A%20undefined%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20value%20%3D%3D%3D%20null%20%29%20%7B%0A%09%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09elem.setAttribute%28%20name%2C%20value%20%2B%20%22%22%20%29%3B%0A%09%09%09return%20value%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09ret%20%3D%20jQuery.find.attr%28%20elem%2C%20name%20%29%3B%0A%0A%09%09//%20Non-existent%20attributes%20return%20null%2C%20we%20normalize%20to%20undefined%0A%09%09return%20ret%20%3D%3D%20null%20%3F%20undefined%20%3A%20ret%3B%0A%09%7D%2C%0A%0A%09attrHooks%3A%20%7B%0A%09%09type%3A%20%7B%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09if%20%28%20%21support.radioValue%20%26%26%20value%20%3D%3D%3D%20%22radio%22%20%26%26%0A%09%09%09%09%09nodeName%28%20elem%2C%20%22input%22%20%29%20%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20elem.value%3B%0A%09%09%09%09%09elem.setAttribute%28%20%22type%22%2C%20value%20%29%3B%0A%09%09%09%09%09if%20%28%20val%20%29%20%7B%0A%09%09%09%09%09%09elem.value%20%3D%20val%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20value%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09removeAttr%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09var%20name%2C%0A%09%09%09i%20%3D%200%2C%0A%0A%09%09%09//%20Attribute%20names%20can%20contain%20non-HTML%20whitespace%20characters%0A%09%09%09//%20https%3A//html.spec.whatwg.org/multipage/syntax.html%23attributes-2%0A%09%09%09attrNames%20%3D%20value%20%26%26%20value.match%28%20rnothtmlwhite%20%29%3B%0A%0A%09%09if%20%28%20attrNames%20%26%26%20elem.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%09%09%09while%20%28%20%28%20name%20%3D%20attrNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09elem.removeAttribute%28%20name%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Hooks%20for%20boolean%20attributes%0AboolHook%20%3D%20%7B%0A%09set%3A%20function%28%20elem%2C%20value%2C%20name%20%29%20%7B%0A%09%09if%20%28%20value%20%3D%3D%3D%20false%20%29%20%7B%0A%0A%09%09%09//%20Remove%20boolean%20attributes%20when%20set%20to%20false%0A%09%09%09jQuery.removeAttr%28%20elem%2C%20name%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09elem.setAttribute%28%20name%2C%20name%20%29%3B%0A%09%09%7D%0A%09%09return%20name%3B%0A%09%7D%0A%7D%3B%0A%0AjQuery.each%28%20jQuery.expr.match.bool.source.match%28%20/%5Cw%2B/g%20%29%2C%20function%28%20_i%2C%20name%20%29%20%7B%0A%09var%20getter%20%3D%20attrHandle%5B%20name%20%5D%20%7C%7C%20jQuery.find.attr%3B%0A%0A%09attrHandle%5B%20name%20%5D%20%3D%20function%28%20elem%2C%20name%2C%20isXML%20%29%20%7B%0A%09%09var%20ret%2C%20handle%2C%0A%09%09%09lowercaseName%20%3D%20name.toLowerCase%28%29%3B%0A%0A%09%09if%20%28%20%21isXML%20%29%20%7B%0A%0A%09%09%09//%20Avoid%20an%20infinite%20loop%20by%20temporarily%20removing%20this%20function%20from%20the%20getter%0A%09%09%09handle%20%3D%20attrHandle%5B%20lowercaseName%20%5D%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20ret%3B%0A%09%09%09ret%20%3D%20getter%28%20elem%2C%20name%2C%20isXML%20%29%20%21%3D%20null%20%3F%0A%09%09%09%09lowercaseName%20%3A%0A%09%09%09%09null%3B%0A%09%09%09attrHandle%5B%20lowercaseName%20%5D%20%3D%20handle%3B%0A%09%09%7D%0A%09%09return%20ret%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rfocusable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Cbutton%29%24/i%2C%0A%09rclickable%20%3D%20/%5E%28%3F%3Aa%7Carea%29%24/i%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09prop%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20jQuery.prop%2C%20name%2C%20value%2C%20arguments.length%20%3E%201%20%29%3B%0A%09%7D%2C%0A%0A%09removeProp%3A%20function%28%20name%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09delete%20this%5B%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%20%5D%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09prop%3A%20function%28%20elem%2C%20name%2C%20value%20%29%20%7B%0A%09%09var%20ret%2C%20hooks%2C%0A%09%09%09nType%20%3D%20elem.nodeType%3B%0A%0A%09%09//%20Don%27t%20get/set%20properties%20on%20text%2C%20comment%20and%20attribute%20nodes%0A%09%09if%20%28%20nType%20%3D%3D%3D%203%20%7C%7C%20nType%20%3D%3D%3D%208%20%7C%7C%20nType%20%3D%3D%3D%202%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20nType%20%21%3D%3D%201%20%7C%7C%20%21jQuery.isXMLDoc%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09//%20Fix%20name%20and%20attach%20hooks%0A%09%09%09name%20%3D%20jQuery.propFix%5B%20name%20%5D%20%7C%7C%20name%3B%0A%09%09%09hooks%20%3D%20jQuery.propHooks%5B%20name%20%5D%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20value%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09if%20%28%20hooks%20%26%26%20%22set%22%20in%20hooks%20%26%26%0A%09%09%09%09%28%20ret%20%3D%20hooks.set%28%20elem%2C%20value%2C%20name%20%29%20%29%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%28%20elem%5B%20name%20%5D%20%3D%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20hooks%20%26%26%20%22get%22%20in%20hooks%20%26%26%20%28%20ret%20%3D%20hooks.get%28%20elem%2C%20name%20%29%20%29%20%21%3D%3D%20null%20%29%20%7B%0A%09%09%09return%20ret%3B%0A%09%09%7D%0A%0A%09%09return%20elem%5B%20name%20%5D%3B%0A%09%7D%2C%0A%0A%09propHooks%3A%20%7B%0A%09%09tabIndex%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20-%2011%20only%0A%09%09%09%09//%20elem.tabIndex%20doesn%27t%20always%20return%20the%0A%09%09%09%09//%20correct%20value%20when%20it%20hasn%27t%20been%20explicitly%20set%0A%09%09%09%09//%20https%3A//web.archive.org/web/20141116233347/http%3A//fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/%0A%09%09%09%09//%20Use%20proper%20attribute%20retrieval%28%2312072%29%0A%09%09%09%09var%20tabindex%20%3D%20jQuery.find.attr%28%20elem%2C%20%22tabindex%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20tabindex%20%29%20%7B%0A%09%09%09%09%09return%20parseInt%28%20tabindex%2C%2010%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09if%20%28%0A%09%09%09%09%09rfocusable.test%28%20elem.nodeName%20%29%20%7C%7C%0A%09%09%09%09%09rclickable.test%28%20elem.nodeName%20%29%20%26%26%0A%09%09%09%09%09elem.href%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20-1%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%0A%09propFix%3A%20%7B%0A%09%09%22for%22%3A%20%22htmlFor%22%2C%0A%09%09%22class%22%3A%20%22className%22%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Support%3A%20IE%20%3C%3D11%20only%0A//%20Accessing%20the%20selectedIndex%20property%0A//%20forces%20the%20browser%20to%20respect%20setting%20selected%0A//%20on%20the%20option%0A//%20The%20getter%20ensures%20a%20default%20option%20is%20selected%0A//%20when%20in%20an%20optgroup%0A//%20eslint%20rule%20%22no-unused-expressions%22%20is%20disabled%20for%20this%20code%0A//%20since%20it%20considers%20such%20accessions%20noop%0Aif%20%28%20%21support.optSelected%20%29%20%7B%0A%09jQuery.propHooks.selected%20%3D%20%7B%0A%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%26%26%20parent.parentNode%20%29%20%7B%0A%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%7D%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09set%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09/%2A%20eslint%20no-unused-expressions%3A%20%22off%22%20%2A/%0A%0A%09%09%09var%20parent%20%3D%20elem.parentNode%3B%0A%09%09%09if%20%28%20parent%20%29%20%7B%0A%09%09%09%09parent.selectedIndex%3B%0A%0A%09%09%09%09if%20%28%20parent.parentNode%20%29%20%7B%0A%09%09%09%09%09parent.parentNode.selectedIndex%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0AjQuery.each%28%20%5B%0A%09%22tabIndex%22%2C%0A%09%22readOnly%22%2C%0A%09%22maxLength%22%2C%0A%09%22cellSpacing%22%2C%0A%09%22cellPadding%22%2C%0A%09%22rowSpan%22%2C%0A%09%22colSpan%22%2C%0A%09%22useMap%22%2C%0A%09%22frameBorder%22%2C%0A%09%22contentEditable%22%0A%5D%2C%20function%28%29%20%7B%0A%09jQuery.propFix%5B%20this.toLowerCase%28%29%20%5D%20%3D%20this%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0A%09//%20Strip%20and%20collapse%20whitespace%20according%20to%20HTML%20spec%0A%09//%20https%3A//infra.spec.whatwg.org/%23strip-and-collapse-ascii-whitespace%0A%09function%20stripAndCollapse%28%20value%20%29%20%7B%0A%09%09var%20tokens%20%3D%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%09return%20tokens.join%28%20%22%20%22%20%29%3B%0A%09%7D%0A%0A%0Afunction%20getClass%28%20elem%20%29%20%7B%0A%09return%20elem.getAttribute%20%26%26%20elem.getAttribute%28%20%22class%22%20%29%20%7C%7C%20%22%22%3B%0A%7D%0A%0Afunction%20classesToArray%28%20value%20%29%20%7B%0A%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09return%20value%3B%0A%09%7D%0A%09if%20%28%20typeof%20value%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20value.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%09%7D%0A%09return%20%5B%5D%3B%0A%7D%0A%0AjQuery.fn.extend%28%20%7B%0A%09addClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.addClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%2B%3D%20clazz%20%2B%20%22%20%22%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09removeClass%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20classes%2C%20elem%2C%20cur%2C%20curValue%2C%20clazz%2C%20j%2C%20finalValue%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20j%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.removeClass%28%20value.call%28%20this%2C%20j%2C%20getClass%28%20this%20%29%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09return%20this.attr%28%20%22class%22%2C%20%22%22%20%29%3B%0A%09%09%7D%0A%0A%09%09classes%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20classes.length%20%29%20%7B%0A%09%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09%09curValue%20%3D%20getClass%28%20elem%20%29%3B%0A%0A%09%09%09%09//%20This%20expression%20is%20here%20for%20better%20compressibility%20%28see%20addClass%29%0A%09%09%09%09cur%20%3D%20elem.nodeType%20%3D%3D%3D%201%20%26%26%20%28%20%22%20%22%20%2B%20stripAndCollapse%28%20curValue%20%29%20%2B%20%22%20%22%20%29%3B%0A%0A%09%09%09%09if%20%28%20cur%20%29%20%7B%0A%09%09%09%09%09j%20%3D%200%3B%0A%09%09%09%09%09while%20%28%20%28%20clazz%20%3D%20classes%5B%20j%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Remove%20%2Aall%2A%20instances%0A%09%09%09%09%09%09while%20%28%20cur.indexOf%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09%09%09cur%20%3D%20cur.replace%28%20%22%20%22%20%2B%20clazz%20%2B%20%22%20%22%2C%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Only%20assign%20if%20different%20to%20avoid%20unneeded%20rendering.%0A%09%09%09%09%09finalValue%20%3D%20stripAndCollapse%28%20cur%20%29%3B%0A%09%09%09%09%09if%20%28%20curValue%20%21%3D%3D%20finalValue%20%29%20%7B%0A%09%09%09%09%09%09elem.setAttribute%28%20%22class%22%2C%20finalValue%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09toggleClass%3A%20function%28%20value%2C%20stateVal%20%29%20%7B%0A%09%09var%20type%20%3D%20typeof%20value%2C%0A%09%09%09isValidValue%20%3D%20type%20%3D%3D%3D%20%22string%22%20%7C%7C%20Array.isArray%28%20value%20%29%3B%0A%0A%09%09if%20%28%20typeof%20stateVal%20%3D%3D%3D%20%22boolean%22%20%26%26%20isValidValue%20%29%20%7B%0A%09%09%09return%20stateVal%20%3F%20this.addClass%28%20value%20%29%20%3A%20this.removeClass%28%20value%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20value%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.toggleClass%28%0A%09%09%09%09%09value.call%28%20this%2C%20i%2C%20getClass%28%20this%20%29%2C%20stateVal%20%29%2C%0A%09%09%09%09%09stateVal%0A%09%09%09%09%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20className%2C%20i%2C%20self%2C%20classNames%3B%0A%0A%09%09%09if%20%28%20isValidValue%20%29%20%7B%0A%0A%09%09%09%09//%20Toggle%20individual%20class%20names%0A%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09self%20%3D%20jQuery%28%20this%20%29%3B%0A%09%09%09%09classNames%20%3D%20classesToArray%28%20value%20%29%3B%0A%0A%09%09%09%09while%20%28%20%28%20className%20%3D%20classNames%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Check%20each%20className%20given%2C%20space%20separated%20list%0A%09%09%09%09%09if%20%28%20self.hasClass%28%20className%20%29%20%29%20%7B%0A%09%09%09%09%09%09self.removeClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09self.addClass%28%20className%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09//%20Toggle%20whole%20class%20name%0A%09%09%09%7D%20else%20if%20%28%20value%20%3D%3D%3D%20undefined%20%7C%7C%20type%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09%09%09className%20%3D%20getClass%28%20this%20%29%3B%0A%09%09%09%09if%20%28%20className%20%29%20%7B%0A%0A%09%09%09%09%09//%20Store%20className%20if%20set%0A%09%09%09%09%09dataPriv.set%28%20this%2C%20%22__className__%22%2C%20className%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20If%20the%20element%20has%20a%20class%20name%20or%20if%20we%27re%20passed%20%60false%60%2C%0A%09%09%09%09//%20then%20remove%20the%20whole%20classname%20%28if%20there%20was%20one%2C%20the%20above%20saved%20it%29.%0A%09%09%09%09//%20Otherwise%20bring%20back%20whatever%20was%20previously%20saved%20%28if%20anything%29%2C%0A%09%09%09%09//%20falling%20back%20to%20the%20empty%20string%20if%20nothing%20was%20stored.%0A%09%09%09%09if%20%28%20this.setAttribute%20%29%20%7B%0A%09%09%09%09%09this.setAttribute%28%20%22class%22%2C%0A%09%09%09%09%09%09className%20%7C%7C%20value%20%3D%3D%3D%20false%20%3F%0A%09%09%09%09%09%09%22%22%20%3A%0A%09%09%09%09%09%09dataPriv.get%28%20this%2C%20%22__className__%22%20%29%20%7C%7C%20%22%22%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09hasClass%3A%20function%28%20selector%20%29%20%7B%0A%09%09var%20className%2C%20elem%2C%0A%09%09%09i%20%3D%200%3B%0A%0A%09%09className%20%3D%20%22%20%22%20%2B%20selector%20%2B%20%22%20%22%3B%0A%09%09while%20%28%20%28%20elem%20%3D%20this%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%201%20%26%26%0A%09%09%09%09%28%20%22%20%22%20%2B%20stripAndCollapse%28%20getClass%28%20elem%20%29%20%29%20%2B%20%22%20%22%20%29.indexOf%28%20className%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20rreturn%20%3D%20/%5Cr/g%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09val%3A%20function%28%20value%20%29%20%7B%0A%09%09var%20hooks%2C%20ret%2C%20valueIsFunction%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21arguments.length%20%29%20%7B%0A%09%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20elem.type%20%5D%20%7C%7C%0A%09%09%09%09%09jQuery.valHooks%5B%20elem.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09%09if%20%28%20hooks%20%26%26%0A%09%09%09%09%09%22get%22%20in%20hooks%20%26%26%0A%09%09%09%09%09%28%20ret%20%3D%20hooks.get%28%20elem%2C%20%22value%22%20%29%20%29%20%21%3D%3D%20undefined%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09return%20ret%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09ret%20%3D%20elem.value%3B%0A%0A%09%09%09%09//%20Handle%20most%20common%20string%20cases%0A%09%09%09%09if%20%28%20typeof%20ret%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09%09%09return%20ret.replace%28%20rreturn%2C%20%22%22%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Handle%20cases%20where%20value%20is%20null/undef%20or%20number%0A%09%09%09%09return%20ret%20%3D%3D%20null%20%3F%20%22%22%20%3A%20ret%3B%0A%09%09%09%7D%0A%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09valueIsFunction%20%3D%20isFunction%28%20value%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09var%20val%3B%0A%0A%09%09%09if%20%28%20this.nodeType%20%21%3D%3D%201%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20valueIsFunction%20%29%20%7B%0A%09%09%09%09val%20%3D%20value.call%28%20this%2C%20i%2C%20jQuery%28%20this%20%29.val%28%29%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09val%20%3D%20value%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Treat%20null/undefined%20as%20%22%22%3B%20convert%20numbers%20to%20string%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09val%20%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20typeof%20val%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09val%20%2B%3D%20%22%22%3B%0A%0A%09%09%09%7D%20else%20if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09val%20%3D%20jQuery.map%28%20val%2C%20function%28%20value%20%29%20%7B%0A%09%09%09%09%09return%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%2B%20%22%22%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09hooks%20%3D%20jQuery.valHooks%5B%20this.type%20%5D%20%7C%7C%20jQuery.valHooks%5B%20this.nodeName.toLowerCase%28%29%20%5D%3B%0A%0A%09%09%09//%20If%20set%20returns%20undefined%2C%20fall%20back%20to%20normal%20setting%0A%09%09%09if%20%28%20%21hooks%20%7C%7C%20%21%28%20%22set%22%20in%20hooks%20%29%20%7C%7C%20hooks.set%28%20this%2C%20val%2C%20%22value%22%20%29%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09this.value%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.extend%28%20%7B%0A%09valHooks%3A%20%7B%0A%09%09option%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%0A%09%09%09%09var%20val%20%3D%20jQuery.find.attr%28%20elem%2C%20%22value%22%20%29%3B%0A%09%09%09%09return%20val%20%21%3D%20null%20%3F%0A%09%09%09%09%09val%20%3A%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D10%20-%2011%20only%0A%09%09%09%09%09//%20option.text%20throws%20exceptions%20%28%2314686%2C%20%2314858%29%0A%09%09%09%09%09//%20Strip%20and%20collapse%20whitespace%0A%09%09%09%09%09//%20https%3A//html.spec.whatwg.org/%23strip-and-collapse-whitespace%0A%09%09%09%09%09stripAndCollapse%28%20jQuery.text%28%20elem%20%29%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09select%3A%20%7B%0A%09%09%09get%3A%20function%28%20elem%20%29%20%7B%0A%09%09%09%09var%20value%2C%20option%2C%20i%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09index%20%3D%20elem.selectedIndex%2C%0A%09%09%09%09%09one%20%3D%20elem.type%20%3D%3D%3D%20%22select-one%22%2C%0A%09%09%09%09%09values%20%3D%20one%20%3F%20null%20%3A%20%5B%5D%2C%0A%09%09%09%09%09max%20%3D%20one%20%3F%20index%20%2B%201%20%3A%20options.length%3B%0A%0A%09%09%09%09if%20%28%20index%20%3C%200%20%29%20%7B%0A%09%09%09%09%09i%20%3D%20max%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09i%20%3D%20one%20%3F%20index%20%3A%200%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Loop%20through%20all%20the%20selected%20options%0A%09%09%09%09for%20%28%20%3B%20i%20%3C%20max%3B%20i%2B%2B%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09//%20IE8-9%20doesn%27t%20update%20selected%20after%20form%20reset%20%28%232551%29%0A%09%09%09%09%09if%20%28%20%28%20option.selected%20%7C%7C%20i%20%3D%3D%3D%20index%20%29%20%26%26%0A%0A%09%09%09%09%09%09%09//%20Don%27t%20return%20options%20that%20are%20disabled%20or%20in%20a%20disabled%20optgroup%0A%09%09%09%09%09%09%09%21option.disabled%20%26%26%0A%09%09%09%09%09%09%09%28%20%21option.parentNode.disabled%20%7C%7C%0A%09%09%09%09%09%09%09%09%21nodeName%28%20option.parentNode%2C%20%22optgroup%22%20%29%20%29%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20Get%20the%20specific%20value%20for%20the%20option%0A%09%09%09%09%09%09value%20%3D%20jQuery%28%20option%20%29.val%28%29%3B%0A%0A%09%09%09%09%09%09//%20We%20don%27t%20need%20an%20array%20for%20one%20selects%0A%09%09%09%09%09%09if%20%28%20one%20%29%20%7B%0A%09%09%09%09%09%09%09return%20value%3B%0A%09%09%09%09%09%09%7D%0A%0A%09%09%09%09%09%09//%20Multi-Selects%20return%20an%20array%0A%09%09%09%09%09%09values.push%28%20value%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%2C%0A%0A%09%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09%09var%20optionSet%2C%20option%2C%0A%09%09%09%09%09options%20%3D%20elem.options%2C%0A%09%09%09%09%09values%20%3D%20jQuery.makeArray%28%20value%20%29%2C%0A%09%09%09%09%09i%20%3D%20options.length%3B%0A%0A%09%09%09%09while%20%28%20i--%20%29%20%7B%0A%09%09%09%09%09option%20%3D%20options%5B%20i%20%5D%3B%0A%0A%09%09%09%09%09/%2A%20eslint-disable%20no-cond-assign%20%2A/%0A%0A%09%09%09%09%09if%20%28%20option.selected%20%3D%0A%09%09%09%09%09%09jQuery.inArray%28%20jQuery.valHooks.option.get%28%20option%20%29%2C%20values%20%29%20%3E%20-1%0A%09%09%09%09%09%29%20%7B%0A%09%09%09%09%09%09optionSet%20%3D%20true%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09/%2A%20eslint-enable%20no-cond-assign%20%2A/%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Force%20browsers%20to%20behave%20consistently%20when%20non-matching%20value%20is%20set%0A%09%09%09%09if%20%28%20%21optionSet%20%29%20%7B%0A%09%09%09%09%09elem.selectedIndex%20%3D%20-1%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20values%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Radios%20and%20checkboxes%20getter/setter%0AjQuery.each%28%20%5B%20%22radio%22%2C%20%22checkbox%22%20%5D%2C%20function%28%29%20%7B%0A%09jQuery.valHooks%5B%20this%20%5D%20%3D%20%7B%0A%09%09set%3A%20function%28%20elem%2C%20value%20%29%20%7B%0A%09%09%09if%20%28%20Array.isArray%28%20value%20%29%20%29%20%7B%0A%09%09%09%09return%20%28%20elem.checked%20%3D%20jQuery.inArray%28%20jQuery%28%20elem%20%29.val%28%29%2C%20value%20%29%20%3E%20-1%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%09if%20%28%20%21support.checkOn%20%29%20%7B%0A%09%09jQuery.valHooks%5B%20this%20%5D.get%20%3D%20function%28%20elem%20%29%20%7B%0A%09%09%09return%20elem.getAttribute%28%20%22value%22%20%29%20%3D%3D%3D%20null%20%3F%20%22on%22%20%3A%20elem.value%3B%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Return%20jQuery%20for%20attributes-only%20inclusion%0A%0A%0Asupport.focusin%20%3D%20%22onfocusin%22%20in%20window%3B%0A%0A%0Avar%20rfocusMorph%20%3D%20/%5E%28%3F%3Afocusinfocus%7Cfocusoutblur%29%24/%2C%0A%09stopPropagationCallback%20%3D%20function%28%20e%20%29%20%7B%0A%09%09e.stopPropagation%28%29%3B%0A%09%7D%3B%0A%0AjQuery.extend%28%20jQuery.event%2C%20%7B%0A%0A%09trigger%3A%20function%28%20event%2C%20data%2C%20elem%2C%20onlyHandlers%20%29%20%7B%0A%0A%09%09var%20i%2C%20cur%2C%20tmp%2C%20bubbleType%2C%20ontype%2C%20handle%2C%20special%2C%20lastElement%2C%0A%09%09%09eventPath%20%3D%20%5B%20elem%20%7C%7C%20document%20%5D%2C%0A%09%09%09type%20%3D%20hasOwn.call%28%20event%2C%20%22type%22%20%29%20%3F%20event.type%20%3A%20event%2C%0A%09%09%09namespaces%20%3D%20hasOwn.call%28%20event%2C%20%22namespace%22%20%29%20%3F%20event.namespace.split%28%20%22.%22%20%29%20%3A%20%5B%5D%3B%0A%0A%09%09cur%20%3D%20lastElement%20%3D%20tmp%20%3D%20elem%20%3D%20elem%20%7C%7C%20document%3B%0A%0A%09%09//%20Don%27t%20do%20events%20on%20text%20and%20comment%20nodes%0A%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%203%20%7C%7C%20elem.nodeType%20%3D%3D%3D%208%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20focus/blur%20morphs%20to%20focusin/out%3B%20ensure%20we%27re%20not%20firing%20them%20right%20now%0A%09%09if%20%28%20rfocusMorph.test%28%20type%20%2B%20jQuery.event.triggered%20%29%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20type.indexOf%28%20%22.%22%20%29%20%3E%20-1%20%29%20%7B%0A%0A%09%09%09//%20Namespaced%20trigger%3B%20create%20a%20regexp%20to%20match%20event%20type%20in%20handle%28%29%0A%09%09%09namespaces%20%3D%20type.split%28%20%22.%22%20%29%3B%0A%09%09%09type%20%3D%20namespaces.shift%28%29%3B%0A%09%09%09namespaces.sort%28%29%3B%0A%09%09%7D%0A%09%09ontype%20%3D%20type.indexOf%28%20%22%3A%22%20%29%20%3C%200%20%26%26%20%22on%22%20%2B%20type%3B%0A%0A%09%09//%20Caller%20can%20pass%20in%20a%20jQuery.Event%20object%2C%20Object%2C%20or%20just%20an%20event%20type%20string%0A%09%09event%20%3D%20event%5B%20jQuery.expando%20%5D%20%3F%0A%09%09%09event%20%3A%0A%09%09%09new%20jQuery.Event%28%20type%2C%20typeof%20event%20%3D%3D%3D%20%22object%22%20%26%26%20event%20%29%3B%0A%0A%09%09//%20Trigger%20bitmask%3A%20%26%201%20for%20native%20handlers%3B%20%26%202%20for%20jQuery%20%28always%20true%29%0A%09%09event.isTrigger%20%3D%20onlyHandlers%20%3F%202%20%3A%203%3B%0A%09%09event.namespace%20%3D%20namespaces.join%28%20%22.%22%20%29%3B%0A%09%09event.rnamespace%20%3D%20event.namespace%20%3F%0A%09%09%09new%20RegExp%28%20%22%28%5E%7C%5C%5C.%29%22%20%2B%20namespaces.join%28%20%22%5C%5C.%28%3F%3A.%2A%5C%5C.%7C%29%22%20%29%20%2B%20%22%28%5C%5C.%7C%24%29%22%20%29%20%3A%0A%09%09%09null%3B%0A%0A%09%09//%20Clean%20up%20the%20event%20in%20case%20it%20is%20being%20reused%0A%09%09event.result%20%3D%20undefined%3B%0A%09%09if%20%28%20%21event.target%20%29%20%7B%0A%09%09%09event.target%20%3D%20elem%3B%0A%09%09%7D%0A%0A%09%09//%20Clone%20any%20incoming%20data%20and%20prepend%20the%20event%2C%20creating%20the%20handler%20arg%20list%0A%09%09data%20%3D%20data%20%3D%3D%20null%20%3F%0A%09%09%09%5B%20event%20%5D%20%3A%0A%09%09%09jQuery.makeArray%28%20data%2C%20%5B%20event%20%5D%20%29%3B%0A%0A%09%09//%20Allow%20special%20events%20to%20draw%20outside%20the%20lines%0A%09%09special%20%3D%20jQuery.event.special%5B%20type%20%5D%20%7C%7C%20%7B%7D%3B%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20special.trigger%20%26%26%20special.trigger.apply%28%20elem%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Determine%20event%20propagation%20path%20in%20advance%2C%20per%20W3C%20events%20spec%20%28%239951%29%0A%09%09//%20Bubble%20up%20to%20document%2C%20then%20to%20window%3B%20watch%20for%20a%20global%20ownerDocument%20var%20%28%239724%29%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21special.noBubble%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09bubbleType%20%3D%20special.delegateType%20%7C%7C%20type%3B%0A%09%09%09if%20%28%20%21rfocusMorph.test%28%20bubbleType%20%2B%20type%20%29%20%29%20%7B%0A%09%09%09%09cur%20%3D%20cur.parentNode%3B%0A%09%09%09%7D%0A%09%09%09for%20%28%20%3B%20cur%3B%20cur%20%3D%20cur.parentNode%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20cur%20%29%3B%0A%09%09%09%09tmp%20%3D%20cur%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Only%20add%20window%20if%20we%20got%20to%20document%20%28e.g.%2C%20not%20plain%20obj%20or%20detached%20DOM%29%0A%09%09%09if%20%28%20tmp%20%3D%3D%3D%20%28%20elem.ownerDocument%20%7C%7C%20document%20%29%20%29%20%7B%0A%09%09%09%09eventPath.push%28%20tmp.defaultView%20%7C%7C%20tmp.parentWindow%20%7C%7C%20window%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Fire%20handlers%20on%20the%20event%20path%0A%09%09i%20%3D%200%3B%0A%09%09while%20%28%20%28%20cur%20%3D%20eventPath%5B%20i%2B%2B%20%5D%20%29%20%26%26%20%21event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09lastElement%20%3D%20cur%3B%0A%09%09%09event.type%20%3D%20i%20%3E%201%20%3F%0A%09%09%09%09bubbleType%20%3A%0A%09%09%09%09special.bindType%20%7C%7C%20type%3B%0A%0A%09%09%09//%20jQuery%20handler%0A%09%09%09handle%20%3D%20%28%0A%09%09%09%09%09dataPriv.get%28%20cur%2C%20%22events%22%20%29%20%7C%7C%20Object.create%28%20null%20%29%0A%09%09%09%09%29%5B%20event.type%20%5D%20%26%26%0A%09%09%09%09dataPriv.get%28%20cur%2C%20%22handle%22%20%29%3B%0A%09%09%09if%20%28%20handle%20%29%20%7B%0A%09%09%09%09handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Native%20handler%0A%09%09%09handle%20%3D%20ontype%20%26%26%20cur%5B%20ontype%20%5D%3B%0A%09%09%09if%20%28%20handle%20%26%26%20handle.apply%20%26%26%20acceptData%28%20cur%20%29%20%29%20%7B%0A%09%09%09%09event.result%20%3D%20handle.apply%28%20cur%2C%20data%20%29%3B%0A%09%09%09%09if%20%28%20event.result%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09%09event.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09event.type%20%3D%20type%3B%0A%0A%09%09//%20If%20nobody%20prevented%20the%20default%20action%2C%20do%20it%20now%0A%09%09if%20%28%20%21onlyHandlers%20%26%26%20%21event.isDefaultPrevented%28%29%20%29%20%7B%0A%0A%09%09%09if%20%28%20%28%20%21special._default%20%7C%7C%0A%09%09%09%09special._default.apply%28%20eventPath.pop%28%29%2C%20data%20%29%20%3D%3D%3D%20false%20%29%20%26%26%0A%09%09%09%09acceptData%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Call%20a%20native%20DOM%20method%20on%20the%20target%20with%20the%20same%20name%20as%20the%20event.%0A%09%09%09%09//%20Don%27t%20do%20default%20actions%20on%20window%2C%20that%27s%20where%20global%20variables%20be%20%28%236170%29%0A%09%09%09%09if%20%28%20ontype%20%26%26%20isFunction%28%20elem%5B%20type%20%5D%20%29%20%26%26%20%21isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20Don%27t%20re-trigger%20an%20onFOO%20event%20when%20we%20call%20its%20FOO%28%29%20method%0A%09%09%09%09%09tmp%20%3D%20elem%5B%20ontype%20%5D%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20null%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09//%20Prevent%20re-triggering%20of%20the%20same%20event%2C%20since%20we%20already%20bubbled%20it%20above%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20type%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.addEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09elem%5B%20type%20%5D%28%29%3B%0A%0A%09%09%09%09%09if%20%28%20event.isPropagationStopped%28%29%20%29%20%7B%0A%09%09%09%09%09%09lastElement.removeEventListener%28%20type%2C%20stopPropagationCallback%20%29%3B%0A%09%09%09%09%09%7D%0A%0A%09%09%09%09%09jQuery.event.triggered%20%3D%20undefined%3B%0A%0A%09%09%09%09%09if%20%28%20tmp%20%29%20%7B%0A%09%09%09%09%09%09elem%5B%20ontype%20%5D%20%3D%20tmp%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20event.result%3B%0A%09%7D%2C%0A%0A%09//%20Piggyback%20on%20a%20donor%20event%20to%20simulate%20a%20different%20one%0A%09//%20Used%20only%20for%20%60focus%28in%20%7C%20out%29%60%20events%0A%09simulate%3A%20function%28%20type%2C%20elem%2C%20event%20%29%20%7B%0A%09%09var%20e%20%3D%20jQuery.extend%28%0A%09%09%09new%20jQuery.Event%28%29%2C%0A%09%09%09event%2C%0A%09%09%09%7B%0A%09%09%09%09type%3A%20type%2C%0A%09%09%09%09isSimulated%3A%20true%0A%09%09%09%7D%0A%09%09%29%3B%0A%0A%09%09jQuery.event.trigger%28%20e%2C%20null%2C%20elem%20%29%3B%0A%09%7D%0A%0A%7D%20%29%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09trigger%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20type%2C%20data%2C%20this%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%09triggerHandler%3A%20function%28%20type%2C%20data%20%29%20%7B%0A%09%09var%20elem%20%3D%20this%5B%200%20%5D%3B%0A%09%09if%20%28%20elem%20%29%20%7B%0A%09%09%09return%20jQuery.event.trigger%28%20type%2C%20data%2C%20elem%2C%20true%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A//%20Support%3A%20Firefox%20%3C%3D44%0A//%20Firefox%20doesn%27t%20have%20focus%28in%20%7C%20out%29%20events%0A//%20Related%20ticket%20-%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D687787%0A//%0A//%20Support%3A%20Chrome%20%3C%3D48%20-%2049%2C%20Safari%20%3C%3D9.0%20-%209.1%0A//%20focus%28in%20%7C%20out%29%20events%20fire%20after%20focus%20%26%20blur%20events%2C%0A//%20which%20is%20spec%20violation%20-%20http%3A//www.w3.org/TR/DOM-Level-3-Events/%23events-focusevent-event-order%0A//%20Related%20ticket%20-%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D449857%0Aif%20%28%20%21support.focusin%20%29%20%7B%0A%09jQuery.each%28%20%7B%20focus%3A%20%22focusin%22%2C%20blur%3A%20%22focusout%22%20%7D%2C%20function%28%20orig%2C%20fix%20%29%20%7B%0A%0A%09%09//%20Attach%20a%20single%20capturing%20handler%20on%20the%20document%20while%20someone%20wants%20focusin/focusout%0A%09%09var%20handler%20%3D%20function%28%20event%20%29%20%7B%0A%09%09%09jQuery.event.simulate%28%20fix%2C%20event.target%2C%20jQuery.event.fix%28%20event%20%29%20%29%3B%0A%09%09%7D%3B%0A%0A%09%09jQuery.event.special%5B%20fix%20%5D%20%3D%20%7B%0A%09%09%09setup%3A%20function%28%29%20%7B%0A%0A%09%09%09%09//%20Handle%3A%20regular%20nodes%20%28via%20%60this.ownerDocument%60%29%2C%20window%0A%09%09%09%09//%20%28via%20%60this.document%60%29%20%26%20document%20%28via%20%60this%60%29.%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.addEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20%28%20attaches%20%7C%7C%200%20%29%20%2B%201%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09teardown%3A%20function%28%29%20%7B%0A%09%09%09%09var%20doc%20%3D%20this.ownerDocument%20%7C%7C%20this.document%20%7C%7C%20this%2C%0A%09%09%09%09%09attaches%20%3D%20dataPriv.access%28%20doc%2C%20fix%20%29%20-%201%3B%0A%0A%09%09%09%09if%20%28%20%21attaches%20%29%20%7B%0A%09%09%09%09%09doc.removeEventListener%28%20orig%2C%20handler%2C%20true%20%29%3B%0A%09%09%09%09%09dataPriv.remove%28%20doc%2C%20fix%20%29%3B%0A%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09dataPriv.access%28%20doc%2C%20fix%2C%20attaches%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%0Avar%20location%20%3D%20window.location%3B%0A%0Avar%20nonce%20%3D%20%7B%20guid%3A%20Date.now%28%29%20%7D%3B%0A%0Avar%20rquery%20%3D%20%28%20/%5C%3F/%20%29%3B%0A%0A%0A%0A//%20Cross-browser%20xml%20parsing%0AjQuery.parseXML%20%3D%20function%28%20data%20%29%20%7B%0A%09var%20xml%3B%0A%09if%20%28%20%21data%20%7C%7C%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20null%3B%0A%09%7D%0A%0A%09//%20Support%3A%20IE%209%20-%2011%20only%0A%09//%20IE%20throws%20on%20parseFromString%20with%20invalid%20input.%0A%09try%20%7B%0A%09%09xml%20%3D%20%28%20new%20window.DOMParser%28%29%20%29.parseFromString%28%20data%2C%20%22text/xml%22%20%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09xml%20%3D%20undefined%3B%0A%09%7D%0A%0A%09if%20%28%20%21xml%20%7C%7C%20xml.getElementsByTagName%28%20%22parsererror%22%20%29.length%20%29%20%7B%0A%09%09jQuery.error%28%20%22Invalid%20XML%3A%20%22%20%2B%20data%20%29%3B%0A%09%7D%0A%09return%20xml%3B%0A%7D%3B%0A%0A%0Avar%0A%09rbracket%20%3D%20/%5C%5B%5C%5D%24/%2C%0A%09rCRLF%20%3D%20/%5Cr%3F%5Cn/g%2C%0A%09rsubmitterTypes%20%3D%20/%5E%28%3F%3Asubmit%7Cbutton%7Cimage%7Creset%7Cfile%29%24/i%2C%0A%09rsubmittable%20%3D%20/%5E%28%3F%3Ainput%7Cselect%7Ctextarea%7Ckeygen%29/i%3B%0A%0Afunction%20buildParams%28%20prefix%2C%20obj%2C%20traditional%2C%20add%20%29%20%7B%0A%09var%20name%3B%0A%0A%09if%20%28%20Array.isArray%28%20obj%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20array%20item.%0A%09%09jQuery.each%28%20obj%2C%20function%28%20i%2C%20v%20%29%20%7B%0A%09%09%09if%20%28%20traditional%20%7C%7C%20rbracket.test%28%20prefix%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Treat%20each%20array%20item%20as%20a%20scalar.%0A%09%09%09%09add%28%20prefix%2C%20v%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Item%20is%20non-scalar%20%28array%20or%20object%29%2C%20encode%20its%20numeric%20index.%0A%09%09%09%09buildParams%28%0A%09%09%09%09%09prefix%20%2B%20%22%5B%22%20%2B%20%28%20typeof%20v%20%3D%3D%3D%20%22object%22%20%26%26%20v%20%21%3D%20null%20%3F%20i%20%3A%20%22%22%20%29%20%2B%20%22%5D%22%2C%0A%09%09%09%09%09v%2C%0A%09%09%09%09%09traditional%2C%0A%09%09%09%09%09add%0A%09%09%09%09%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20if%20%28%20%21traditional%20%26%26%20toType%28%20obj%20%29%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%0A%09%09//%20Serialize%20object%20item.%0A%09%09for%20%28%20name%20in%20obj%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%20%2B%20%22%5B%22%20%2B%20name%20%2B%20%22%5D%22%2C%20obj%5B%20name%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Serialize%20scalar%20item.%0A%09%09add%28%20prefix%2C%20obj%20%29%3B%0A%09%7D%0A%7D%0A%0A//%20Serialize%20an%20array%20of%20form%20elements%20or%20a%20set%20of%0A//%20key/values%20into%20a%20query%20string%0AjQuery.param%20%3D%20function%28%20a%2C%20traditional%20%29%20%7B%0A%09var%20prefix%2C%0A%09%09s%20%3D%20%5B%5D%2C%0A%09%09add%20%3D%20function%28%20key%2C%20valueOrFunction%20%29%20%7B%0A%0A%09%09%09//%20If%20value%20is%20a%20function%2C%20invoke%20it%20and%20use%20its%20return%20value%0A%09%09%09var%20value%20%3D%20isFunction%28%20valueOrFunction%20%29%20%3F%0A%09%09%09%09valueOrFunction%28%29%20%3A%0A%09%09%09%09valueOrFunction%3B%0A%0A%09%09%09s%5B%20s.length%20%5D%20%3D%20encodeURIComponent%28%20key%20%29%20%2B%20%22%3D%22%20%2B%0A%09%09%09%09encodeURIComponent%28%20value%20%3D%3D%20null%20%3F%20%22%22%20%3A%20value%20%29%3B%0A%09%09%7D%3B%0A%0A%09if%20%28%20a%20%3D%3D%20null%20%29%20%7B%0A%09%09return%20%22%22%3B%0A%09%7D%0A%0A%09//%20If%20an%20array%20was%20passed%20in%2C%20assume%20that%20it%20is%20an%20array%20of%20form%20elements.%0A%09if%20%28%20Array.isArray%28%20a%20%29%20%7C%7C%20%28%20a.jquery%20%26%26%20%21jQuery.isPlainObject%28%20a%20%29%20%29%20%29%20%7B%0A%0A%09%09//%20Serialize%20the%20form%20elements%0A%09%09jQuery.each%28%20a%2C%20function%28%29%20%7B%0A%09%09%09add%28%20this.name%2C%20this.value%20%29%3B%0A%09%09%7D%20%29%3B%0A%0A%09%7D%20else%20%7B%0A%0A%09%09//%20If%20traditional%2C%20encode%20the%20%22old%22%20way%20%28the%20way%201.3.2%20or%20older%0A%09%09//%20did%20it%29%2C%20otherwise%20encode%20params%20recursively.%0A%09%09for%20%28%20prefix%20in%20a%20%29%20%7B%0A%09%09%09buildParams%28%20prefix%2C%20a%5B%20prefix%20%5D%2C%20traditional%2C%20add%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Return%20the%20resulting%20serialization%0A%09return%20s.join%28%20%22%26%22%20%29%3B%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%09serialize%3A%20function%28%29%20%7B%0A%09%09return%20jQuery.param%28%20this.serializeArray%28%29%20%29%3B%0A%09%7D%2C%0A%09serializeArray%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%0A%09%09%09//%20Can%20add%20propHook%20for%20%22elements%22%20to%20filter%20or%20add%20form%20elements%0A%09%09%09var%20elements%20%3D%20jQuery.prop%28%20this%2C%20%22elements%22%20%29%3B%0A%09%09%09return%20elements%20%3F%20jQuery.makeArray%28%20elements%20%29%20%3A%20this%3B%0A%09%09%7D%20%29%0A%09%09.filter%28%20function%28%29%20%7B%0A%09%09%09var%20type%20%3D%20this.type%3B%0A%0A%09%09%09//%20Use%20.is%28%20%22%3Adisabled%22%20%29%20so%20that%20fieldset%5Bdisabled%5D%20works%0A%09%09%09return%20this.name%20%26%26%20%21jQuery%28%20this%20%29.is%28%20%22%3Adisabled%22%20%29%20%26%26%0A%09%09%09%09rsubmittable.test%28%20this.nodeName%20%29%20%26%26%20%21rsubmitterTypes.test%28%20type%20%29%20%26%26%0A%09%09%09%09%28%20this.checked%20%7C%7C%20%21rcheckableType.test%28%20type%20%29%20%29%3B%0A%09%09%7D%20%29%0A%09%09.map%28%20function%28%20_i%2C%20elem%20%29%20%7B%0A%09%09%09var%20val%20%3D%20jQuery%28%20this%20%29.val%28%29%3B%0A%0A%09%09%09if%20%28%20val%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09return%20null%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20Array.isArray%28%20val%20%29%20%29%20%7B%0A%09%09%09%09return%20jQuery.map%28%20val%2C%20function%28%20val%20%29%20%7B%0A%09%09%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20%7B%20name%3A%20elem.name%2C%20value%3A%20val.replace%28%20rCRLF%2C%20%22%5Cr%5Cn%22%20%29%20%7D%3B%0A%09%09%7D%20%29.get%28%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0Avar%0A%09r20%20%3D%20/%2520/g%2C%0A%09rhash%20%3D%20/%23.%2A%24/%2C%0A%09rantiCache%20%3D%20/%28%5B%3F%26%5D%29_%3D%5B%5E%26%5D%2A/%2C%0A%09rheaders%20%3D%20/%5E%28.%2A%3F%29%3A%5B%20%5Ct%5D%2A%28%5B%5E%5Cr%5Cn%5D%2A%29%24/mg%2C%0A%0A%09//%20%237653%2C%20%238125%2C%20%238152%3A%20local%20protocol%20detection%0A%09rlocalProtocol%20%3D%20/%5E%28%3F%3Aabout%7Capp%7Capp-storage%7C.%2B-extension%7Cfile%7Cres%7Cwidget%29%3A%24/%2C%0A%09rnoContent%20%3D%20/%5E%28%3F%3AGET%7CHEAD%29%24/%2C%0A%09rprotocol%20%3D%20/%5E%5C/%5C//%2C%0A%0A%09/%2A%20Prefilters%0A%09%20%2A%201%29%20They%20are%20useful%20to%20introduce%20custom%20dataTypes%20%28see%20ajax/jsonp.js%20for%20an%20example%29%0A%09%20%2A%202%29%20These%20are%20called%3A%0A%09%20%2A%20%20%20%20-%20BEFORE%20asking%20for%20a%20transport%0A%09%20%2A%20%20%20%20-%20AFTER%20param%20serialization%20%28s.data%20is%20a%20string%20if%20s.processData%20is%20true%29%0A%09%20%2A%203%29%20key%20is%20the%20dataType%0A%09%20%2A%204%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%205%29%20execution%20will%20start%20with%20transport%20dataType%20and%20THEN%20continue%20down%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09prefilters%20%3D%20%7B%7D%2C%0A%0A%09/%2A%20Transports%20bindings%0A%09%20%2A%201%29%20key%20is%20the%20dataType%0A%09%20%2A%202%29%20the%20catchall%20symbol%20%22%2A%22%20can%20be%20used%0A%09%20%2A%203%29%20selection%20will%20start%20with%20transport%20dataType%20and%20THEN%20go%20to%20%22%2A%22%20if%20needed%0A%09%20%2A/%0A%09transports%20%3D%20%7B%7D%2C%0A%0A%09//%20Avoid%20comment-prolog%20char%20sequence%20%28%2310098%29%3B%20must%20appease%20lint%20and%20evade%20compression%0A%09allTypes%20%3D%20%22%2A/%22.concat%28%20%22%2A%22%20%29%2C%0A%0A%09//%20Anchor%20tag%20for%20parsing%20the%20document%20origin%0A%09originAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%09originAnchor.href%20%3D%20location.href%3B%0A%0A//%20Base%20%22constructor%22%20for%20jQuery.ajaxPrefilter%20and%20jQuery.ajaxTransport%0Afunction%20addToPrefiltersOrTransports%28%20structure%20%29%20%7B%0A%0A%09//%20dataTypeExpression%20is%20optional%20and%20defaults%20to%20%22%2A%22%0A%09return%20function%28%20dataTypeExpression%2C%20func%20%29%20%7B%0A%0A%09%09if%20%28%20typeof%20dataTypeExpression%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09func%20%3D%20dataTypeExpression%3B%0A%09%09%09dataTypeExpression%20%3D%20%22%2A%22%3B%0A%09%09%7D%0A%0A%09%09var%20dataType%2C%0A%09%09%09i%20%3D%200%2C%0A%09%09%09dataTypes%20%3D%20dataTypeExpression.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%5D%3B%0A%0A%09%09if%20%28%20isFunction%28%20func%20%29%20%29%20%7B%0A%0A%09%09%09//%20For%20each%20dataType%20in%20the%20dataTypeExpression%0A%09%09%09while%20%28%20%28%20dataType%20%3D%20dataTypes%5B%20i%2B%2B%20%5D%20%29%20%29%20%7B%0A%0A%09%09%09%09//%20Prepend%20if%20requested%0A%09%09%09%09if%20%28%20dataType%5B%200%20%5D%20%3D%3D%3D%20%22%2B%22%20%29%20%7B%0A%09%09%09%09%09dataType%20%3D%20dataType.slice%28%201%20%29%20%7C%7C%20%22%2A%22%3B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.unshift%28%20func%20%29%3B%0A%0A%09%09%09%09//%20Otherwise%20append%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%28%20structure%5B%20dataType%20%5D%20%3D%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%20%29.push%28%20func%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0A//%20Base%20inspection%20function%20for%20prefilters%20and%20transports%0Afunction%20inspectPrefiltersOrTransports%28%20structure%2C%20options%2C%20originalOptions%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20inspected%20%3D%20%7B%7D%2C%0A%09%09seekingTransport%20%3D%20%28%20structure%20%3D%3D%3D%20transports%20%29%3B%0A%0A%09function%20inspect%28%20dataType%20%29%20%7B%0A%09%09var%20selected%3B%0A%09%09inspected%5B%20dataType%20%5D%20%3D%20true%3B%0A%09%09jQuery.each%28%20structure%5B%20dataType%20%5D%20%7C%7C%20%5B%5D%2C%20function%28%20_%2C%20prefilterOrFactory%20%29%20%7B%0A%09%09%09var%20dataTypeOrTransport%20%3D%20prefilterOrFactory%28%20options%2C%20originalOptions%2C%20jqXHR%20%29%3B%0A%09%09%09if%20%28%20typeof%20dataTypeOrTransport%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%21seekingTransport%20%26%26%20%21inspected%5B%20dataTypeOrTransport%20%5D%20%29%20%7B%0A%0A%09%09%09%09options.dataTypes.unshift%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09inspect%28%20dataTypeOrTransport%20%29%3B%0A%09%09%09%09return%20false%3B%0A%09%09%09%7D%20else%20if%20%28%20seekingTransport%20%29%20%7B%0A%09%09%09%09return%20%21%28%20selected%20%3D%20dataTypeOrTransport%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%09return%20selected%3B%0A%09%7D%0A%0A%09return%20inspect%28%20options.dataTypes%5B%200%20%5D%20%29%20%7C%7C%20%21inspected%5B%20%22%2A%22%20%5D%20%26%26%20inspect%28%20%22%2A%22%20%29%3B%0A%7D%0A%0A//%20A%20special%20extend%20for%20ajax%20options%0A//%20that%20takes%20%22flat%22%20options%20%28not%20to%20be%20deep%20extended%29%0A//%20Fixes%20%239887%0Afunction%20ajaxExtend%28%20target%2C%20src%20%29%20%7B%0A%09var%20key%2C%20deep%2C%0A%09%09flatOptions%20%3D%20jQuery.ajaxSettings.flatOptions%20%7C%7C%20%7B%7D%3B%0A%0A%09for%20%28%20key%20in%20src%20%29%20%7B%0A%09%09if%20%28%20src%5B%20key%20%5D%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%28%20flatOptions%5B%20key%20%5D%20%3F%20target%20%3A%20%28%20deep%20%7C%7C%20%28%20deep%20%3D%20%7B%7D%20%29%20%29%20%29%5B%20key%20%5D%20%3D%20src%5B%20key%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%09if%20%28%20deep%20%29%20%7B%0A%09%09jQuery.extend%28%20true%2C%20target%2C%20deep%20%29%3B%0A%09%7D%0A%0A%09return%20target%3B%0A%7D%0A%0A/%2A%20Handles%20responses%20to%20an%20ajax%20request%3A%0A%20%2A%20-%20finds%20the%20right%20dataType%20%28mediates%20between%20content-type%20and%20expected%20dataType%29%0A%20%2A%20-%20returns%20the%20corresponding%20response%0A%20%2A/%0Afunction%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%20%7B%0A%0A%09var%20ct%2C%20type%2C%20finalDataType%2C%20firstDataType%2C%0A%09%09contents%20%3D%20s.contents%2C%0A%09%09dataTypes%20%3D%20s.dataTypes%3B%0A%0A%09//%20Remove%20auto%20dataType%20and%20get%20content-type%20in%20the%20process%0A%09while%20%28%20dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%09%09dataTypes.shift%28%29%3B%0A%09%09if%20%28%20ct%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09ct%20%3D%20s.mimeType%20%7C%7C%20jqXHR.getResponseHeader%28%20%22Content-Type%22%20%29%3B%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20if%20we%27re%20dealing%20with%20a%20known%20content-type%0A%09if%20%28%20ct%20%29%20%7B%0A%09%09for%20%28%20type%20in%20contents%20%29%20%7B%0A%09%09%09if%20%28%20contents%5B%20type%20%5D%20%26%26%20contents%5B%20type%20%5D.test%28%20ct%20%29%20%29%20%7B%0A%09%09%09%09dataTypes.unshift%28%20type%20%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09//%20Check%20to%20see%20if%20we%20have%20a%20response%20for%20the%20expected%20dataType%0A%09if%20%28%20dataTypes%5B%200%20%5D%20in%20responses%20%29%20%7B%0A%09%09finalDataType%20%3D%20dataTypes%5B%200%20%5D%3B%0A%09%7D%20else%20%7B%0A%0A%09%09//%20Try%20convertible%20dataTypes%0A%09%09for%20%28%20type%20in%20responses%20%29%20%7B%0A%09%09%09if%20%28%20%21dataTypes%5B%200%20%5D%20%7C%7C%20s.converters%5B%20type%20%2B%20%22%20%22%20%2B%20dataTypes%5B%200%20%5D%20%5D%20%29%20%7B%0A%09%09%09%09finalDataType%20%3D%20type%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20%21firstDataType%20%29%20%7B%0A%09%09%09%09firstDataType%20%3D%20type%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Or%20just%20use%20first%20one%0A%09%09finalDataType%20%3D%20finalDataType%20%7C%7C%20firstDataType%3B%0A%09%7D%0A%0A%09//%20If%20we%20found%20a%20dataType%0A%09//%20We%20add%20the%20dataType%20to%20the%20list%20if%20needed%0A%09//%20and%20return%20the%20corresponding%20response%0A%09if%20%28%20finalDataType%20%29%20%7B%0A%09%09if%20%28%20finalDataType%20%21%3D%3D%20dataTypes%5B%200%20%5D%20%29%20%7B%0A%09%09%09dataTypes.unshift%28%20finalDataType%20%29%3B%0A%09%09%7D%0A%09%09return%20responses%5B%20finalDataType%20%5D%3B%0A%09%7D%0A%7D%0A%0A/%2A%20Chain%20conversions%20given%20the%20request%20and%20the%20original%20response%0A%20%2A%20Also%20sets%20the%20responseXXX%20fields%20on%20the%20jqXHR%20instance%0A%20%2A/%0Afunction%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%20%7B%0A%09var%20conv2%2C%20current%2C%20conv%2C%20tmp%2C%20prev%2C%0A%09%09converters%20%3D%20%7B%7D%2C%0A%0A%09%09//%20Work%20with%20a%20copy%20of%20dataTypes%20in%20case%20we%20need%20to%20modify%20it%20for%20conversion%0A%09%09dataTypes%20%3D%20s.dataTypes.slice%28%29%3B%0A%0A%09//%20Create%20converters%20map%20with%20lowercased%20keys%0A%09if%20%28%20dataTypes%5B%201%20%5D%20%29%20%7B%0A%09%09for%20%28%20conv%20in%20s.converters%20%29%20%7B%0A%09%09%09converters%5B%20conv.toLowerCase%28%29%20%5D%20%3D%20s.converters%5B%20conv%20%5D%3B%0A%09%09%7D%0A%09%7D%0A%0A%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09//%20Convert%20to%20each%20sequential%20dataType%0A%09while%20%28%20current%20%29%20%7B%0A%0A%09%09if%20%28%20s.responseFields%5B%20current%20%5D%20%29%20%7B%0A%09%09%09jqXHR%5B%20s.responseFields%5B%20current%20%5D%20%5D%20%3D%20response%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20the%20dataFilter%20if%20provided%0A%09%09if%20%28%20%21prev%20%26%26%20isSuccess%20%26%26%20s.dataFilter%20%29%20%7B%0A%09%09%09response%20%3D%20s.dataFilter%28%20response%2C%20s.dataType%20%29%3B%0A%09%09%7D%0A%0A%09%09prev%20%3D%20current%3B%0A%09%09current%20%3D%20dataTypes.shift%28%29%3B%0A%0A%09%09if%20%28%20current%20%29%20%7B%0A%0A%09%09%09//%20There%27s%20only%20work%20to%20do%20if%20current%20dataType%20is%20non-auto%0A%09%09%09if%20%28%20current%20%3D%3D%3D%20%22%2A%22%20%29%20%7B%0A%0A%09%09%09%09current%20%3D%20prev%3B%0A%0A%09%09%09//%20Convert%20response%20if%20prev%20dataType%20is%20non-auto%20and%20differs%20from%20current%0A%09%09%09%7D%20else%20if%20%28%20prev%20%21%3D%3D%20%22%2A%22%20%26%26%20prev%20%21%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09//%20Seek%20a%20direct%20converter%0A%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20current%20%5D%20%7C%7C%20converters%5B%20%22%2A%20%22%20%2B%20current%20%5D%3B%0A%0A%09%09%09%09//%20If%20none%20found%2C%20seek%20a%20pair%0A%09%09%09%09if%20%28%20%21conv%20%29%20%7B%0A%09%09%09%09%09for%20%28%20conv2%20in%20converters%20%29%20%7B%0A%0A%09%09%09%09%09%09//%20If%20conv2%20outputs%20current%0A%09%09%09%09%09%09tmp%20%3D%20conv2.split%28%20%22%20%22%20%29%3B%0A%09%09%09%09%09%09if%20%28%20tmp%5B%201%20%5D%20%3D%3D%3D%20current%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20If%20prev%20can%20be%20converted%20to%20accepted%20input%0A%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20prev%20%2B%20%22%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%20%7C%7C%0A%09%09%09%09%09%09%09%09converters%5B%20%22%2A%20%22%20%2B%20tmp%5B%200%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09if%20%28%20conv%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Condense%20equivalence%20converters%0A%09%09%09%09%09%09%09%09if%20%28%20conv%20%3D%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09conv%20%3D%20converters%5B%20conv2%20%5D%3B%0A%0A%09%09%09%09%09%09%09%09//%20Otherwise%2C%20insert%20the%20intermediate%20dataType%0A%09%09%09%09%09%09%09%09%7D%20else%20if%20%28%20converters%5B%20conv2%20%5D%20%21%3D%3D%20true%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09current%20%3D%20tmp%5B%200%20%5D%3B%0A%09%09%09%09%09%09%09%09%09dataTypes.unshift%28%20tmp%5B%201%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Apply%20converter%20%28if%20not%20an%20equivalence%29%0A%09%09%09%09if%20%28%20conv%20%21%3D%3D%20true%20%29%20%7B%0A%0A%09%09%09%09%09//%20Unless%20errors%20are%20allowed%20to%20bubble%2C%20catch%20and%20return%20them%0A%09%09%09%09%09if%20%28%20conv%20%26%26%20s.throws%20%29%20%7B%0A%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09try%20%7B%0A%09%09%09%09%09%09%09response%20%3D%20conv%28%20response%20%29%3B%0A%09%09%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%09%09%09%09%09%09%09return%20%7B%0A%09%09%09%09%09%09%09%09state%3A%20%22parsererror%22%2C%0A%09%09%09%09%09%09%09%09error%3A%20conv%20%3F%20e%20%3A%20%22No%20conversion%20from%20%22%20%2B%20prev%20%2B%20%22%20to%20%22%20%2B%20current%0A%09%09%09%09%09%09%09%7D%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%0A%0A%09return%20%7B%20state%3A%20%22success%22%2C%20data%3A%20response%20%7D%3B%0A%7D%0A%0AjQuery.extend%28%20%7B%0A%0A%09//%20Counter%20for%20holding%20the%20number%20of%20active%20queries%0A%09active%3A%200%2C%0A%0A%09//%20Last-Modified%20header%20cache%20for%20next%20request%0A%09lastModified%3A%20%7B%7D%2C%0A%09etag%3A%20%7B%7D%2C%0A%0A%09ajaxSettings%3A%20%7B%0A%09%09url%3A%20location.href%2C%0A%09%09type%3A%20%22GET%22%2C%0A%09%09isLocal%3A%20rlocalProtocol.test%28%20location.protocol%20%29%2C%0A%09%09global%3A%20true%2C%0A%09%09processData%3A%20true%2C%0A%09%09async%3A%20true%2C%0A%09%09contentType%3A%20%22application/x-www-form-urlencoded%3B%20charset%3DUTF-8%22%2C%0A%0A%09%09/%2A%0A%09%09timeout%3A%200%2C%0A%09%09data%3A%20null%2C%0A%09%09dataType%3A%20null%2C%0A%09%09username%3A%20null%2C%0A%09%09password%3A%20null%2C%0A%09%09cache%3A%20null%2C%0A%09%09throws%3A%20false%2C%0A%09%09traditional%3A%20false%2C%0A%09%09headers%3A%20%7B%7D%2C%0A%09%09%2A/%0A%0A%09%09accepts%3A%20%7B%0A%09%09%09%22%2A%22%3A%20allTypes%2C%0A%09%09%09text%3A%20%22text/plain%22%2C%0A%09%09%09html%3A%20%22text/html%22%2C%0A%09%09%09xml%3A%20%22application/xml%2C%20text/xml%22%2C%0A%09%09%09json%3A%20%22application/json%2C%20text/javascript%22%0A%09%09%7D%2C%0A%0A%09%09contents%3A%20%7B%0A%09%09%09xml%3A%20/%5Cbxml%5Cb/%2C%0A%09%09%09html%3A%20/%5Cbhtml/%2C%0A%09%09%09json%3A%20/%5Cbjson%5Cb/%0A%09%09%7D%2C%0A%0A%09%09responseFields%3A%20%7B%0A%09%09%09xml%3A%20%22responseXML%22%2C%0A%09%09%09text%3A%20%22responseText%22%2C%0A%09%09%09json%3A%20%22responseJSON%22%0A%09%09%7D%2C%0A%0A%09%09//%20Data%20converters%0A%09%09//%20Keys%20separate%20source%20%28or%20catchall%20%22%2A%22%29%20and%20destination%20types%20with%20a%20single%20space%0A%09%09converters%3A%20%7B%0A%0A%09%09%09//%20Convert%20anything%20to%20text%0A%09%09%09%22%2A%20text%22%3A%20String%2C%0A%0A%09%09%09//%20Text%20to%20html%20%28true%20%3D%20no%20transformation%29%0A%09%09%09%22text%20html%22%3A%20true%2C%0A%0A%09%09%09//%20Evaluate%20text%20as%20a%20json%20expression%0A%09%09%09%22text%20json%22%3A%20JSON.parse%2C%0A%0A%09%09%09//%20Parse%20text%20as%20xml%0A%09%09%09%22text%20xml%22%3A%20jQuery.parseXML%0A%09%09%7D%2C%0A%0A%09%09//%20For%20options%20that%20shouldn%27t%20be%20deep%20extended%3A%0A%09%09//%20you%20can%20add%20your%20own%20custom%20options%20here%20if%0A%09%09//%20and%20when%20you%20create%20one%20that%20shouldn%27t%20be%0A%09%09//%20deep%20extended%20%28see%20ajaxExtend%29%0A%09%09flatOptions%3A%20%7B%0A%09%09%09url%3A%20true%2C%0A%09%09%09context%3A%20true%0A%09%09%7D%0A%09%7D%2C%0A%0A%09//%20Creates%20a%20full%20fledged%20settings%20object%20into%20target%0A%09//%20with%20both%20ajaxSettings%20and%20settings%20fields.%0A%09//%20If%20target%20is%20omitted%2C%20writes%20into%20ajaxSettings.%0A%09ajaxSetup%3A%20function%28%20target%2C%20settings%20%29%20%7B%0A%09%09return%20settings%20%3F%0A%0A%09%09%09//%20Building%20a%20settings%20object%0A%09%09%09ajaxExtend%28%20ajaxExtend%28%20target%2C%20jQuery.ajaxSettings%20%29%2C%20settings%20%29%20%3A%0A%0A%09%09%09//%20Extending%20ajaxSettings%0A%09%09%09ajaxExtend%28%20jQuery.ajaxSettings%2C%20target%20%29%3B%0A%09%7D%2C%0A%0A%09ajaxPrefilter%3A%20addToPrefiltersOrTransports%28%20prefilters%20%29%2C%0A%09ajaxTransport%3A%20addToPrefiltersOrTransports%28%20transports%20%29%2C%0A%0A%09//%20Main%20method%0A%09ajax%3A%20function%28%20url%2C%20options%20%29%20%7B%0A%0A%09%09//%20If%20url%20is%20an%20object%2C%20simulate%20pre-1.5%20signature%0A%09%09if%20%28%20typeof%20url%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09%09options%20%3D%20url%3B%0A%09%09%09url%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20Force%20options%20to%20be%20an%20object%0A%09%09options%20%3D%20options%20%7C%7C%20%7B%7D%3B%0A%0A%09%09var%20transport%2C%0A%0A%09%09%09//%20URL%20without%20anti-cache%20param%0A%09%09%09cacheURL%2C%0A%0A%09%09%09//%20Response%20headers%0A%09%09%09responseHeadersString%2C%0A%09%09%09responseHeaders%2C%0A%0A%09%09%09//%20timeout%20handle%0A%09%09%09timeoutTimer%2C%0A%0A%09%09%09//%20Url%20cleanup%20var%0A%09%09%09urlAnchor%2C%0A%0A%09%09%09//%20Request%20state%20%28becomes%20false%20upon%20send%20and%20true%20upon%20completion%29%0A%09%09%09completed%2C%0A%0A%09%09%09//%20To%20know%20if%20global%20events%20are%20to%20be%20dispatched%0A%09%09%09fireGlobals%2C%0A%0A%09%09%09//%20Loop%20variable%0A%09%09%09i%2C%0A%0A%09%09%09//%20uncached%20part%20of%20the%20url%0A%09%09%09uncached%2C%0A%0A%09%09%09//%20Create%20the%20final%20options%20object%0A%09%09%09s%20%3D%20jQuery.ajaxSetup%28%20%7B%7D%2C%20options%20%29%2C%0A%0A%09%09%09//%20Callbacks%20context%0A%09%09%09callbackContext%20%3D%20s.context%20%7C%7C%20s%2C%0A%0A%09%09%09//%20Context%20for%20global%20events%20is%20callbackContext%20if%20it%20is%20a%20DOM%20node%20or%20jQuery%20collection%0A%09%09%09globalEventContext%20%3D%20s.context%20%26%26%0A%09%09%09%09%28%20callbackContext.nodeType%20%7C%7C%20callbackContext.jquery%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20callbackContext%20%29%20%3A%0A%09%09%09%09%09jQuery.event%2C%0A%0A%09%09%09//%20Deferreds%0A%09%09%09deferred%20%3D%20jQuery.Deferred%28%29%2C%0A%09%09%09completeDeferred%20%3D%20jQuery.Callbacks%28%20%22once%20memory%22%20%29%2C%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09statusCode%20%3D%20s.statusCode%20%7C%7C%20%7B%7D%2C%0A%0A%09%09%09//%20Headers%20%28they%20are%20sent%20all%20at%20once%29%0A%09%09%09requestHeaders%20%3D%20%7B%7D%2C%0A%09%09%09requestHeadersNames%20%3D%20%7B%7D%2C%0A%0A%09%09%09//%20Default%20abort%20message%0A%09%09%09strAbort%20%3D%20%22canceled%22%2C%0A%0A%09%09%09//%20Fake%20xhr%0A%09%09%09jqXHR%20%3D%20%7B%0A%09%09%09%09readyState%3A%200%2C%0A%0A%09%09%09%09//%20Builds%20headers%20hashtable%20if%20needed%0A%09%09%09%09getResponseHeader%3A%20function%28%20key%20%29%20%7B%0A%09%09%09%09%09var%20match%3B%0A%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20%21responseHeaders%20%29%20%7B%0A%09%09%09%09%09%09%09responseHeaders%20%3D%20%7B%7D%3B%0A%09%09%09%09%09%09%09while%20%28%20%28%20match%20%3D%20rheaders.exec%28%20responseHeadersString%20%29%20%29%20%29%20%7B%0A%09%09%09%09%09%09%09%09responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%3D%0A%09%09%09%09%09%09%09%09%09%28%20responseHeaders%5B%20match%5B%201%20%5D.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%20%7C%7C%20%5B%5D%20%29%0A%09%09%09%09%09%09%09%09%09%09.concat%28%20match%5B%202%20%5D%20%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09match%20%3D%20responseHeaders%5B%20key.toLowerCase%28%29%20%2B%20%22%20%22%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20match%20%3D%3D%20null%20%3F%20null%20%3A%20match.join%28%20%22%2C%20%22%20%29%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Raw%20string%0A%09%09%09%09getAllResponseHeaders%3A%20function%28%29%20%7B%0A%09%09%09%09%09return%20completed%20%3F%20responseHeadersString%20%3A%20null%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Caches%20the%20header%0A%09%09%09%09setRequestHeader%3A%20function%28%20name%2C%20value%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09name%20%3D%20requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%3D%0A%09%09%09%09%09%09%09requestHeadersNames%5B%20name.toLowerCase%28%29%20%5D%20%7C%7C%20name%3B%0A%09%09%09%09%09%09requestHeaders%5B%20name%20%5D%20%3D%20value%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Overrides%20response%20content-type%20header%0A%09%09%09%09overrideMimeType%3A%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09if%20%28%20completed%20%3D%3D%20null%20%29%20%7B%0A%09%09%09%09%09%09s.mimeType%20%3D%20type%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09%09statusCode%3A%20function%28%20map%20%29%20%7B%0A%09%09%09%09%09var%20code%3B%0A%09%09%09%09%09if%20%28%20map%20%29%20%7B%0A%09%09%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Execute%20the%20appropriate%20callbacks%0A%09%09%09%09%09%09%09jqXHR.always%28%20map%5B%20jqXHR.status%20%5D%20%29%3B%0A%09%09%09%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09%09%09%09//%20Lazy-add%20the%20new%20callbacks%20in%20a%20way%20that%20preserves%20old%20ones%0A%09%09%09%09%09%09%09for%20%28%20code%20in%20map%20%29%20%7B%0A%09%09%09%09%09%09%09%09statusCode%5B%20code%20%5D%20%3D%20%5B%20statusCode%5B%20code%20%5D%2C%20map%5B%20code%20%5D%20%5D%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%2C%0A%0A%09%09%09%09//%20Cancel%20the%20request%0A%09%09%09%09abort%3A%20function%28%20statusText%20%29%20%7B%0A%09%09%09%09%09var%20finalText%20%3D%20statusText%20%7C%7C%20strAbort%3B%0A%09%09%09%09%09if%20%28%20transport%20%29%20%7B%0A%09%09%09%09%09%09transport.abort%28%20finalText%20%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09done%28%200%2C%20finalText%20%29%3B%0A%09%09%09%09%09return%20this%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%0A%09%09//%20Attach%20deferreds%0A%09%09deferred.promise%28%20jqXHR%20%29%3B%0A%0A%09%09//%20Add%20protocol%20if%20not%20provided%20%28prefilters%20might%20expect%20it%29%0A%09%09//%20Handle%20falsy%20url%20in%20the%20settings%20object%20%28%2310093%3A%20consistency%20with%20old%20signature%29%0A%09%09//%20We%20also%20use%20the%20url%20parameter%20if%20available%0A%09%09s.url%20%3D%20%28%20%28%20url%20%7C%7C%20s.url%20%7C%7C%20location.href%20%29%20%2B%20%22%22%20%29%0A%09%09%09.replace%28%20rprotocol%2C%20location.protocol%20%2B%20%22//%22%20%29%3B%0A%0A%09%09//%20Alias%20method%20option%20to%20type%20as%20per%20ticket%20%2312004%0A%09%09s.type%20%3D%20options.method%20%7C%7C%20options.type%20%7C%7C%20s.method%20%7C%7C%20s.type%3B%0A%0A%09%09//%20Extract%20dataTypes%20list%0A%09%09s.dataTypes%20%3D%20%28%20s.dataType%20%7C%7C%20%22%2A%22%20%29.toLowerCase%28%29.match%28%20rnothtmlwhite%20%29%20%7C%7C%20%5B%20%22%22%20%5D%3B%0A%0A%09%09//%20A%20cross-domain%20request%20is%20in%20order%20when%20the%20origin%20doesn%27t%20match%20the%20current%20origin.%0A%09%09if%20%28%20s.crossDomain%20%3D%3D%20null%20%29%20%7B%0A%09%09%09urlAnchor%20%3D%20document.createElement%28%20%22a%22%20%29%3B%0A%0A%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%2C%20Edge%2012%20-%2015%0A%09%09%09//%20IE%20throws%20exception%20on%20accessing%20the%20href%20property%20if%20url%20is%20malformed%2C%0A%09%09%09//%20e.g.%20http%3A//example.com%3A80x/%0A%09%09%09try%20%7B%0A%09%09%09%09urlAnchor.href%20%3D%20s.url%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%20%3C%3D8%20-%2011%20only%0A%09%09%09%09//%20Anchor%27s%20host%20property%20isn%27t%20correctly%20set%20when%20s.url%20is%20relative%0A%09%09%09%09urlAnchor.href%20%3D%20urlAnchor.href%3B%0A%09%09%09%09s.crossDomain%20%3D%20originAnchor.protocol%20%2B%20%22//%22%20%2B%20originAnchor.host%20%21%3D%3D%0A%09%09%09%09%09urlAnchor.protocol%20%2B%20%22//%22%20%2B%20urlAnchor.host%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20If%20there%20is%20an%20error%20parsing%20the%20URL%2C%20assume%20it%20is%20crossDomain%2C%0A%09%09%09%09//%20it%20can%20be%20rejected%20by%20the%20transport%20if%20it%20is%20invalid%0A%09%09%09%09s.crossDomain%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Convert%20data%20if%20not%20already%20a%20string%0A%09%09if%20%28%20s.data%20%26%26%20s.processData%20%26%26%20typeof%20s.data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09%09s.data%20%3D%20jQuery.param%28%20s.data%2C%20s.traditional%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Apply%20prefilters%0A%09%09inspectPrefiltersOrTransports%28%20prefilters%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20request%20was%20aborted%20inside%20a%20prefilter%2C%20stop%20there%0A%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09return%20jqXHR%3B%0A%09%09%7D%0A%0A%09%09//%20We%20can%20fire%20global%20events%20as%20of%20now%20if%20asked%20to%0A%09%09//%20Don%27t%20fire%20events%20if%20jQuery.event%20is%20undefined%20in%20an%20AMD-usage%20scenario%20%28%2315118%29%0A%09%09fireGlobals%20%3D%20jQuery.event%20%26%26%20s.global%3B%0A%0A%09%09//%20Watch%20for%20a%20new%20set%20of%20requests%0A%09%09if%20%28%20fireGlobals%20%26%26%20jQuery.active%2B%2B%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09jQuery.event.trigger%28%20%22ajaxStart%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Uppercase%20the%20type%0A%09%09s.type%20%3D%20s.type.toUpperCase%28%29%3B%0A%0A%09%09//%20Determine%20if%20request%20has%20content%0A%09%09s.hasContent%20%3D%20%21rnoContent.test%28%20s.type%20%29%3B%0A%0A%09%09//%20Save%20the%20URL%20in%20case%20we%27re%20toying%20with%20the%20If-Modified-Since%0A%09%09//%20and/or%20If-None-Match%20header%20later%20on%0A%09%09//%20Remove%20hash%20to%20simplify%20url%20manipulation%0A%09%09cacheURL%20%3D%20s.url.replace%28%20rhash%2C%20%22%22%20%29%3B%0A%0A%09%09//%20More%20options%20handling%20for%20requests%20with%20no%20content%0A%09%09if%20%28%20%21s.hasContent%20%29%20%7B%0A%0A%09%09%09//%20Remember%20the%20hash%20so%20we%20can%20put%20it%20back%0A%09%09%09uncached%20%3D%20s.url.slice%28%20cacheURL.length%20%29%3B%0A%0A%09%09%09//%20If%20data%20is%20available%20and%20should%20be%20processed%2C%20append%20data%20to%20url%0A%09%09%09if%20%28%20s.data%20%26%26%20%28%20s.processData%20%7C%7C%20typeof%20s.data%20%3D%3D%3D%20%22string%22%20%29%20%29%20%7B%0A%09%09%09%09cacheURL%20%2B%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.data%3B%0A%0A%09%09%09%09//%20%239682%3A%20remove%20data%20so%20that%20it%27s%20not%20used%20in%20an%20eventual%20retry%0A%09%09%09%09delete%20s.data%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Add%20or%20update%20anti-cache%20param%20if%20needed%0A%09%09%09if%20%28%20s.cache%20%3D%3D%3D%20false%20%29%20%7B%0A%09%09%09%09cacheURL%20%3D%20cacheURL.replace%28%20rantiCache%2C%20%22%241%22%20%29%3B%0A%09%09%09%09uncached%20%3D%20%28%20rquery.test%28%20cacheURL%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20%22_%3D%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%2B%0A%09%09%09%09%09uncached%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Put%20hash%20and%20anti-cache%20on%20the%20URL%20that%20will%20be%20requested%20%28gh-1732%29%0A%09%09%09s.url%20%3D%20cacheURL%20%2B%20uncached%3B%0A%0A%09%09//%20Change%20%27%2520%27%20to%20%27%2B%27%20if%20this%20is%20encoded%20form%20body%20content%20%28gh-2658%29%0A%09%09%7D%20else%20if%20%28%20s.data%20%26%26%20s.processData%20%26%26%0A%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%29%20%7B%0A%09%09%09s.data%20%3D%20s.data.replace%28%20r20%2C%20%22%2B%22%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09if%20%28%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-Modified-Since%22%2C%20jQuery.lastModified%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20jQuery.etag%5B%20cacheURL%20%5D%20%29%20%7B%0A%09%09%09%09jqXHR.setRequestHeader%28%20%22If-None-Match%22%2C%20jQuery.etag%5B%20cacheURL%20%5D%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20correct%20header%2C%20if%20data%20is%20being%20sent%0A%09%09if%20%28%20s.data%20%26%26%20s.hasContent%20%26%26%20s.contentType%20%21%3D%3D%20false%20%7C%7C%20options.contentType%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20%22Content-Type%22%2C%20s.contentType%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Set%20the%20Accepts%20header%20for%20the%20server%2C%20depending%20on%20the%20dataType%0A%09%09jqXHR.setRequestHeader%28%0A%09%09%09%22Accept%22%2C%0A%09%09%09s.dataTypes%5B%200%20%5D%20%26%26%20s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%3F%0A%09%09%09%09s.accepts%5B%20s.dataTypes%5B%200%20%5D%20%5D%20%2B%0A%09%09%09%09%09%28%20s.dataTypes%5B%200%20%5D%20%21%3D%3D%20%22%2A%22%20%3F%20%22%2C%20%22%20%2B%20allTypes%20%2B%20%22%3B%20q%3D0.01%22%20%3A%20%22%22%20%29%20%3A%0A%09%09%09%09s.accepts%5B%20%22%2A%22%20%5D%0A%09%09%29%3B%0A%0A%09%09//%20Check%20for%20headers%20option%0A%09%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09%09jqXHR.setRequestHeader%28%20i%2C%20s.headers%5B%20i%20%5D%20%29%3B%0A%09%09%7D%0A%0A%09%09//%20Allow%20custom%20headers/mimetypes%20and%20early%20abort%0A%09%09if%20%28%20s.beforeSend%20%26%26%0A%09%09%09%28%20s.beforeSend.call%28%20callbackContext%2C%20jqXHR%2C%20s%20%29%20%3D%3D%3D%20false%20%7C%7C%20completed%20%29%20%29%20%7B%0A%0A%09%09%09//%20Abort%20if%20not%20done%20already%20and%20return%0A%09%09%09return%20jqXHR.abort%28%29%3B%0A%09%09%7D%0A%0A%09%09//%20Aborting%20is%20no%20longer%20a%20cancellation%0A%09%09strAbort%20%3D%20%22abort%22%3B%0A%0A%09%09//%20Install%20callbacks%20on%20deferreds%0A%09%09completeDeferred.add%28%20s.complete%20%29%3B%0A%09%09jqXHR.done%28%20s.success%20%29%3B%0A%09%09jqXHR.fail%28%20s.error%20%29%3B%0A%0A%09%09//%20Get%20transport%0A%09%09transport%20%3D%20inspectPrefiltersOrTransports%28%20transports%2C%20s%2C%20options%2C%20jqXHR%20%29%3B%0A%0A%09%09//%20If%20no%20transport%2C%20we%20auto-abort%0A%09%09if%20%28%20%21transport%20%29%20%7B%0A%09%09%09done%28%20-1%2C%20%22No%20Transport%22%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09jqXHR.readyState%20%3D%201%3B%0A%0A%09%09%09//%20Send%20global%20event%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxSend%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20If%20request%20was%20aborted%20inside%20ajaxSend%2C%20stop%20there%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%20jqXHR%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Timeout%0A%09%09%09if%20%28%20s.async%20%26%26%20s.timeout%20%3E%200%20%29%20%7B%0A%09%09%09%09timeoutTimer%20%3D%20window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09jqXHR.abort%28%20%22timeout%22%20%29%3B%0A%09%09%09%09%7D%2C%20s.timeout%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09try%20%7B%0A%09%09%09%09completed%20%3D%20false%3B%0A%09%09%09%09transport.send%28%20requestHeaders%2C%20done%20%29%3B%0A%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09//%20Rethrow%20post-completion%20exceptions%0A%09%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Propagate%20others%20as%20results%0A%09%09%09%09done%28%20-1%2C%20e%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Callback%20for%20when%20everything%20is%20done%0A%09%09function%20done%28%20status%2C%20nativeStatusText%2C%20responses%2C%20headers%20%29%20%7B%0A%09%09%09var%20isSuccess%2C%20success%2C%20error%2C%20response%2C%20modified%2C%0A%09%09%09%09statusText%20%3D%20nativeStatusText%3B%0A%0A%09%09%09//%20Ignore%20repeat%20invocations%0A%09%09%09if%20%28%20completed%20%29%20%7B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09completed%20%3D%20true%3B%0A%0A%09%09%09//%20Clear%20timeout%20if%20it%20exists%0A%09%09%09if%20%28%20timeoutTimer%20%29%20%7B%0A%09%09%09%09window.clearTimeout%28%20timeoutTimer%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Dereference%20transport%20for%20early%20garbage%20collection%0A%09%09%09//%20%28no%20matter%20how%20long%20the%20jqXHR%20object%20will%20be%20used%29%0A%09%09%09transport%20%3D%20undefined%3B%0A%0A%09%09%09//%20Cache%20response%20headers%0A%09%09%09responseHeadersString%20%3D%20headers%20%7C%7C%20%22%22%3B%0A%0A%09%09%09//%20Set%20readyState%0A%09%09%09jqXHR.readyState%20%3D%20status%20%3E%200%20%3F%204%20%3A%200%3B%0A%0A%09%09%09//%20Determine%20if%20successful%0A%09%09%09isSuccess%20%3D%20status%20%3E%3D%20200%20%26%26%20status%20%3C%20300%20%7C%7C%20status%20%3D%3D%3D%20304%3B%0A%0A%09%09%09//%20Get%20response%20data%0A%09%09%09if%20%28%20responses%20%29%20%7B%0A%09%09%09%09response%20%3D%20ajaxHandleResponses%28%20s%2C%20jqXHR%2C%20responses%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Use%20a%20noop%20converter%20for%20missing%20script%0A%09%09%09if%20%28%20%21isSuccess%20%26%26%20jQuery.inArray%28%20%22script%22%2C%20s.dataTypes%20%29%20%3E%20-1%20%29%20%7B%0A%09%09%09%09s.converters%5B%20%22text%20script%22%20%5D%20%3D%20function%28%29%20%7B%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Convert%20no%20matter%20what%20%28that%20way%20responseXXX%20fields%20are%20always%20set%29%0A%09%09%09response%20%3D%20ajaxConvert%28%20s%2C%20response%2C%20jqXHR%2C%20isSuccess%20%29%3B%0A%0A%09%09%09//%20If%20successful%2C%20handle%20type%20chaining%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%0A%09%09%09%09//%20Set%20the%20If-Modified-Since%20and/or%20If-None-Match%20header%2C%20if%20in%20ifModified%20mode.%0A%09%09%09%09if%20%28%20s.ifModified%20%29%20%7B%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22Last-Modified%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.lastModified%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09modified%20%3D%20jqXHR.getResponseHeader%28%20%22etag%22%20%29%3B%0A%09%09%09%09%09if%20%28%20modified%20%29%20%7B%0A%09%09%09%09%09%09jQuery.etag%5B%20cacheURL%20%5D%20%3D%20modified%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20if%20no%20content%0A%09%09%09%09if%20%28%20status%20%3D%3D%3D%20204%20%7C%7C%20s.type%20%3D%3D%3D%20%22HEAD%22%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22nocontent%22%3B%0A%0A%09%09%09%09//%20if%20not%20modified%0A%09%09%09%09%7D%20else%20if%20%28%20status%20%3D%3D%3D%20304%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22notmodified%22%3B%0A%0A%09%09%09%09//%20If%20we%20have%20data%2C%20let%27s%20convert%20it%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09statusText%20%3D%20response.state%3B%0A%09%09%09%09%09success%20%3D%20response.data%3B%0A%09%09%09%09%09error%20%3D%20response.error%3B%0A%09%09%09%09%09isSuccess%20%3D%20%21error%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%20else%20%7B%0A%0A%09%09%09%09//%20Extract%20error%20from%20statusText%20and%20normalize%20for%20non-aborts%0A%09%09%09%09error%20%3D%20statusText%3B%0A%09%09%09%09if%20%28%20status%20%7C%7C%20%21statusText%20%29%20%7B%0A%09%09%09%09%09statusText%20%3D%20%22error%22%3B%0A%09%09%09%09%09if%20%28%20status%20%3C%200%20%29%20%7B%0A%09%09%09%09%09%09status%20%3D%200%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09//%20Set%20data%20for%20the%20fake%20xhr%20object%0A%09%09%09jqXHR.status%20%3D%20status%3B%0A%09%09%09jqXHR.statusText%20%3D%20%28%20nativeStatusText%20%7C%7C%20statusText%20%29%20%2B%20%22%22%3B%0A%0A%09%09%09//%20Success/Error%0A%09%09%09if%20%28%20isSuccess%20%29%20%7B%0A%09%09%09%09deferred.resolveWith%28%20callbackContext%2C%20%5B%20success%2C%20statusText%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09deferred.rejectWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%2C%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Status-dependent%20callbacks%0A%09%09%09jqXHR.statusCode%28%20statusCode%20%29%3B%0A%09%09%09statusCode%20%3D%20undefined%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20isSuccess%20%3F%20%22ajaxSuccess%22%20%3A%20%22ajaxError%22%2C%0A%09%09%09%09%09%5B%20jqXHR%2C%20s%2C%20isSuccess%20%3F%20success%20%3A%20error%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Complete%0A%09%09%09completeDeferred.fireWith%28%20callbackContext%2C%20%5B%20jqXHR%2C%20statusText%20%5D%20%29%3B%0A%0A%09%09%09if%20%28%20fireGlobals%20%29%20%7B%0A%09%09%09%09globalEventContext.trigger%28%20%22ajaxComplete%22%2C%20%5B%20jqXHR%2C%20s%20%5D%20%29%3B%0A%0A%09%09%09%09//%20Handle%20the%20global%20AJAX%20counter%0A%09%09%09%09if%20%28%20%21%28%20--jQuery.active%20%29%20%29%20%7B%0A%09%09%09%09%09jQuery.event.trigger%28%20%22ajaxStop%22%20%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09return%20jqXHR%3B%0A%09%7D%2C%0A%0A%09getJSON%3A%20function%28%20url%2C%20data%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20data%2C%20callback%2C%20%22json%22%20%29%3B%0A%09%7D%2C%0A%0A%09getScript%3A%20function%28%20url%2C%20callback%20%29%20%7B%0A%09%09return%20jQuery.get%28%20url%2C%20undefined%2C%20callback%2C%20%22script%22%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%5B%20%22get%22%2C%20%22post%22%20%5D%2C%20function%28%20_i%2C%20method%20%29%20%7B%0A%09jQuery%5B%20method%20%5D%20%3D%20function%28%20url%2C%20data%2C%20callback%2C%20type%20%29%20%7B%0A%0A%09%09//%20Shift%20arguments%20if%20data%20argument%20was%20omitted%0A%09%09if%20%28%20isFunction%28%20data%20%29%20%29%20%7B%0A%09%09%09type%20%3D%20type%20%7C%7C%20callback%3B%0A%09%09%09callback%20%3D%20data%3B%0A%09%09%09data%20%3D%20undefined%3B%0A%09%09%7D%0A%0A%09%09//%20The%20url%20can%20be%20an%20options%20object%20%28which%20then%20must%20have%20.url%29%0A%09%09return%20jQuery.ajax%28%20jQuery.extend%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%09%09%09type%3A%20method%2C%0A%09%09%09dataType%3A%20type%2C%0A%09%09%09data%3A%20data%2C%0A%09%09%09success%3A%20callback%0A%09%09%7D%2C%20jQuery.isPlainObject%28%20url%20%29%20%26%26%20url%20%29%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09var%20i%3B%0A%09for%20%28%20i%20in%20s.headers%20%29%20%7B%0A%09%09if%20%28%20i.toLowerCase%28%29%20%3D%3D%3D%20%22content-type%22%20%29%20%7B%0A%09%09%09s.contentType%20%3D%20s.headers%5B%20i%20%5D%20%7C%7C%20%22%22%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery._evalUrl%20%3D%20function%28%20url%2C%20options%2C%20doc%20%29%20%7B%0A%09return%20jQuery.ajax%28%20%7B%0A%09%09url%3A%20url%2C%0A%0A%09%09//%20Make%20this%20explicit%2C%20since%20user%20can%20override%20this%20through%20ajaxSetup%20%28%2311264%29%0A%09%09type%3A%20%22GET%22%2C%0A%09%09dataType%3A%20%22script%22%2C%0A%09%09cache%3A%20true%2C%0A%09%09async%3A%20false%2C%0A%09%09global%3A%20false%2C%0A%0A%09%09//%20Only%20evaluate%20the%20response%20if%20it%20is%20successful%20%28gh-4126%29%0A%09%09//%20dataFilter%20is%20not%20invoked%20for%20failure%20responses%2C%20so%20using%20it%20instead%0A%09%09//%20of%20the%20default%20converter%20is%20kludgy%20but%20it%20works.%0A%09%09converters%3A%20%7B%0A%09%09%09%22text%20script%22%3A%20function%28%29%20%7B%7D%0A%09%09%7D%2C%0A%09%09dataFilter%3A%20function%28%20response%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20response%2C%20options%2C%20doc%20%29%3B%0A%09%09%7D%0A%09%7D%20%29%3B%0A%7D%3B%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%09wrapAll%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20wrap%3B%0A%0A%09%09if%20%28%20this%5B%200%20%5D%20%29%20%7B%0A%09%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09%09html%20%3D%20html.call%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20The%20elements%20to%20wrap%20the%20target%20around%0A%09%09%09wrap%20%3D%20jQuery%28%20html%2C%20this%5B%200%20%5D.ownerDocument%20%29.eq%28%200%20%29.clone%28%20true%20%29%3B%0A%0A%09%09%09if%20%28%20this%5B%200%20%5D.parentNode%20%29%20%7B%0A%09%09%09%09wrap.insertBefore%28%20this%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09wrap.map%28%20function%28%29%20%7B%0A%09%09%09%09var%20elem%20%3D%20this%3B%0A%0A%09%09%09%09while%20%28%20elem.firstElementChild%20%29%20%7B%0A%09%09%09%09%09elem%20%3D%20elem.firstElementChild%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20elem%3B%0A%09%09%09%7D%20%29.append%28%20this%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this%3B%0A%09%7D%2C%0A%0A%09wrapInner%3A%20function%28%20html%20%29%20%7B%0A%09%09if%20%28%20isFunction%28%20html%20%29%20%29%20%7B%0A%09%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09jQuery%28%20this%20%29.wrapInner%28%20html.call%28%20this%2C%20i%20%29%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09return%20this.each%28%20function%28%29%20%7B%0A%09%09%09var%20self%20%3D%20jQuery%28%20this%20%29%2C%0A%09%09%09%09contents%20%3D%20self.contents%28%29%3B%0A%0A%09%09%09if%20%28%20contents.length%20%29%20%7B%0A%09%09%09%09contents.wrapAll%28%20html%20%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09self.append%28%20html%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09wrap%3A%20function%28%20html%20%29%20%7B%0A%09%09var%20htmlIsFunction%20%3D%20isFunction%28%20html%20%29%3B%0A%0A%09%09return%20this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.wrapAll%28%20htmlIsFunction%20%3F%20html.call%28%20this%2C%20i%20%29%20%3A%20html%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%2C%0A%0A%09unwrap%3A%20function%28%20selector%20%29%20%7B%0A%09%09this.parent%28%20selector%20%29.not%28%20%22body%22%20%29.each%28%20function%28%29%20%7B%0A%09%09%09jQuery%28%20this%20%29.replaceWith%28%20this.childNodes%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%09return%20this%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0AjQuery.expr.pseudos.hidden%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21jQuery.expr.pseudos.visible%28%20elem%20%29%3B%0A%7D%3B%0AjQuery.expr.pseudos.visible%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20%21%21%28%20elem.offsetWidth%20%7C%7C%20elem.offsetHeight%20%7C%7C%20elem.getClientRects%28%29.length%20%29%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.ajaxSettings.xhr%20%3D%20function%28%29%20%7B%0A%09try%20%7B%0A%09%09return%20new%20window.XMLHttpRequest%28%29%3B%0A%09%7D%20catch%20%28%20e%20%29%20%7B%7D%0A%7D%3B%0A%0Avar%20xhrSuccessStatus%20%3D%20%7B%0A%0A%09%09//%20File%20protocol%20always%20yields%20status%20code%200%2C%20assume%20200%0A%09%090%3A%20200%2C%0A%0A%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09//%20%231450%3A%20sometimes%20IE%20returns%201223%20when%20it%20should%20be%20204%0A%09%091223%3A%20204%0A%09%7D%2C%0A%09xhrSupported%20%3D%20jQuery.ajaxSettings.xhr%28%29%3B%0A%0Asupport.cors%20%3D%20%21%21xhrSupported%20%26%26%20%28%20%22withCredentials%22%20in%20xhrSupported%20%29%3B%0Asupport.ajax%20%3D%20xhrSupported%20%3D%20%21%21xhrSupported%3B%0A%0AjQuery.ajaxTransport%28%20function%28%20options%20%29%20%7B%0A%09var%20callback%2C%20errorCallback%3B%0A%0A%09//%20Cross%20domain%20only%20allowed%20if%20supported%20through%20XMLHttpRequest%0A%09if%20%28%20support.cors%20%7C%7C%20xhrSupported%20%26%26%20%21options.crossDomain%20%29%20%7B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20headers%2C%20complete%20%29%20%7B%0A%09%09%09%09var%20i%2C%0A%09%09%09%09%09xhr%20%3D%20options.xhr%28%29%3B%0A%0A%09%09%09%09xhr.open%28%0A%09%09%09%09%09options.type%2C%0A%09%09%09%09%09options.url%2C%0A%09%09%09%09%09options.async%2C%0A%09%09%09%09%09options.username%2C%0A%09%09%09%09%09options.password%0A%09%09%09%09%29%3B%0A%0A%09%09%09%09//%20Apply%20custom%20fields%20if%20provided%0A%09%09%09%09if%20%28%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09for%20%28%20i%20in%20options.xhrFields%20%29%20%7B%0A%09%09%09%09%09%09xhr%5B%20i%20%5D%20%3D%20options.xhrFields%5B%20i%20%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Override%20mime%20type%20if%20needed%0A%09%09%09%09if%20%28%20options.mimeType%20%26%26%20xhr.overrideMimeType%20%29%20%7B%0A%09%09%09%09%09xhr.overrideMimeType%28%20options.mimeType%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20X-Requested-With%20header%0A%09%09%09%09//%20For%20cross-domain%20requests%2C%20seeing%20as%20conditions%20for%20a%20preflight%20are%0A%09%09%09%09//%20akin%20to%20a%20jigsaw%20puzzle%2C%20we%20simply%20never%20set%20it%20to%20be%20sure.%0A%09%09%09%09//%20%28it%20can%20always%20be%20set%20on%20a%20per-request%20basis%20or%20even%20using%20ajaxSetup%29%0A%09%09%09%09//%20For%20same-domain%20requests%2C%20won%27t%20change%20header%20if%20already%20provided.%0A%09%09%09%09if%20%28%20%21options.crossDomain%20%26%26%20%21headers%5B%20%22X-Requested-With%22%20%5D%20%29%20%7B%0A%09%09%09%09%09headers%5B%20%22X-Requested-With%22%20%5D%20%3D%20%22XMLHttpRequest%22%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Set%20headers%0A%09%09%09%09for%20%28%20i%20in%20headers%20%29%20%7B%0A%09%09%09%09%09xhr.setRequestHeader%28%20i%2C%20headers%5B%20i%20%5D%20%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Callback%0A%09%09%09%09callback%20%3D%20function%28%20type%20%29%20%7B%0A%09%09%09%09%09return%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09callback%20%3D%20errorCallback%20%3D%20xhr.onload%20%3D%0A%09%09%09%09%09%09%09%09xhr.onerror%20%3D%20xhr.onabort%20%3D%20xhr.ontimeout%20%3D%0A%09%09%09%09%09%09%09%09%09xhr.onreadystatechange%20%3D%20null%3B%0A%0A%09%09%09%09%09%09%09if%20%28%20type%20%3D%3D%3D%20%22abort%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09xhr.abort%28%29%3B%0A%09%09%09%09%09%09%09%7D%20else%20if%20%28%20type%20%3D%3D%3D%20%22error%22%20%29%20%7B%0A%0A%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09//%20On%20a%20manual%20native%20abort%2C%20IE9%20throws%0A%09%09%09%09%09%09%09%09//%20errors%20on%20any%20property%20access%20that%20is%20not%20readyState%0A%09%09%09%09%09%09%09%09if%20%28%20typeof%20xhr.status%20%21%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%200%2C%20%22error%22%20%29%3B%0A%09%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09%09complete%28%0A%0A%09%09%09%09%09%09%09%09%09%09//%20File%3A%20protocol%20always%20yields%20status%200%3B%20see%20%238605%2C%20%2314207%0A%09%09%09%09%09%09%09%09%09%09xhr.status%2C%0A%09%09%09%09%09%09%09%09%09%09xhr.statusText%0A%09%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%09%09%09complete%28%0A%09%09%09%09%09%09%09%09%09xhrSuccessStatus%5B%20xhr.status%20%5D%20%7C%7C%20xhr.status%2C%0A%09%09%09%09%09%09%09%09%09xhr.statusText%2C%0A%0A%09%09%09%09%09%09%09%09%09//%20Support%3A%20IE%20%3C%3D9%20only%0A%09%09%09%09%09%09%09%09%09//%20IE9%20has%20no%20XHR2%20but%20throws%20on%20binary%20%28trac-11426%29%0A%09%09%09%09%09%09%09%09%09//%20For%20XHR2%20non-text%2C%20let%20the%20caller%20handle%20it%20%28gh-2498%29%0A%09%09%09%09%09%09%09%09%09%28%20xhr.responseType%20%7C%7C%20%22text%22%20%29%20%21%3D%3D%20%22text%22%20%20%7C%7C%0A%09%09%09%09%09%09%09%09%09typeof%20xhr.responseText%20%21%3D%3D%20%22string%22%20%3F%0A%09%09%09%09%09%09%09%09%09%09%7B%20binary%3A%20xhr.response%20%7D%20%3A%0A%09%09%09%09%09%09%09%09%09%09%7B%20text%3A%20xhr.responseText%20%7D%2C%0A%09%09%09%09%09%09%09%09%09xhr.getAllResponseHeaders%28%29%0A%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%3B%0A%0A%09%09%09%09//%20Listen%20to%20events%0A%09%09%09%09xhr.onload%20%3D%20callback%28%29%3B%0A%09%09%09%09errorCallback%20%3D%20xhr.onerror%20%3D%20xhr.ontimeout%20%3D%20callback%28%20%22error%22%20%29%3B%0A%0A%09%09%09%09//%20Support%3A%20IE%209%20only%0A%09%09%09%09//%20Use%20onreadystatechange%20to%20replace%20onabort%0A%09%09%09%09//%20to%20handle%20uncaught%20aborts%0A%09%09%09%09if%20%28%20xhr.onabort%20%21%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09%09xhr.onabort%20%3D%20errorCallback%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09xhr.onreadystatechange%20%3D%20function%28%29%20%7B%0A%0A%09%09%09%09%09%09//%20Check%20readyState%20before%20timeout%20as%20it%20changes%0A%09%09%09%09%09%09if%20%28%20xhr.readyState%20%3D%3D%3D%204%20%29%20%7B%0A%0A%09%09%09%09%09%09%09//%20Allow%20onerror%20to%20be%20called%20first%2C%0A%09%09%09%09%09%09%09//%20but%20that%20will%20not%20handle%20a%20native%20abort%0A%09%09%09%09%09%09%09//%20Also%2C%20save%20errorCallback%20to%20a%20variable%0A%09%09%09%09%09%09%09//%20as%20xhr.onerror%20cannot%20be%20accessed%0A%09%09%09%09%09%09%09window.setTimeout%28%20function%28%29%20%7B%0A%09%09%09%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09%09%09%09errorCallback%28%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Create%20the%20abort%20callback%0A%09%09%09%09callback%20%3D%20callback%28%20%22abort%22%20%29%3B%0A%0A%09%09%09%09try%20%7B%0A%0A%09%09%09%09%09//%20Do%20send%20the%20request%20%28this%20may%20raise%20an%20exception%29%0A%09%09%09%09%09xhr.send%28%20options.hasContent%20%26%26%20options.data%20%7C%7C%20null%20%29%3B%0A%09%09%09%09%7D%20catch%20%28%20e%20%29%20%7B%0A%0A%09%09%09%09%09//%20%2314683%3A%20Only%20rethrow%20if%20this%20hasn%27t%20been%20notified%20as%20an%20error%20yet%0A%09%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09%09throw%20e%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Prevent%20auto-execution%20of%20scripts%20when%20no%20explicit%20dataType%20was%20provided%20%28See%20gh-2432%29%0AjQuery.ajaxPrefilter%28%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.contents.script%20%3D%20false%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Install%20script%20dataType%0AjQuery.ajaxSetup%28%20%7B%0A%09accepts%3A%20%7B%0A%09%09script%3A%20%22text/javascript%2C%20application/javascript%2C%20%22%20%2B%0A%09%09%09%22application/ecmascript%2C%20application/x-ecmascript%22%0A%09%7D%2C%0A%09contents%3A%20%7B%0A%09%09script%3A%20/%5Cb%28%3F%3Ajava%7Cecma%29script%5Cb/%0A%09%7D%2C%0A%09converters%3A%20%7B%0A%09%09%22text%20script%22%3A%20function%28%20text%20%29%20%7B%0A%09%09%09jQuery.globalEval%28%20text%20%29%3B%0A%09%09%09return%20text%3B%0A%09%09%7D%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Handle%20cache%27s%20special%20case%20and%20crossDomain%0AjQuery.ajaxPrefilter%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%09if%20%28%20s.cache%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09s.cache%20%3D%20false%3B%0A%09%7D%0A%09if%20%28%20s.crossDomain%20%29%20%7B%0A%09%09s.type%20%3D%20%22GET%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Bind%20script%20tag%20hack%20transport%0AjQuery.ajaxTransport%28%20%22script%22%2C%20function%28%20s%20%29%20%7B%0A%0A%09//%20This%20transport%20only%20deals%20with%20cross%20domain%20or%20forced-by-attrs%20requests%0A%09if%20%28%20s.crossDomain%20%7C%7C%20s.scriptAttrs%20%29%20%7B%0A%09%09var%20script%2C%20callback%3B%0A%09%09return%20%7B%0A%09%09%09send%3A%20function%28%20_%2C%20complete%20%29%20%7B%0A%09%09%09%09script%20%3D%20jQuery%28%20%22%3Cscript%3E%22%20%29%0A%09%09%09%09%09.attr%28%20s.scriptAttrs%20%7C%7C%20%7B%7D%20%29%0A%09%09%09%09%09.prop%28%20%7B%20charset%3A%20s.scriptCharset%2C%20src%3A%20s.url%20%7D%20%29%0A%09%09%09%09%09.on%28%20%22load%20error%22%2C%20callback%20%3D%20function%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09script.remove%28%29%3B%0A%09%09%09%09%09%09callback%20%3D%20null%3B%0A%09%09%09%09%09%09if%20%28%20evt%20%29%20%7B%0A%09%09%09%09%09%09%09complete%28%20evt.type%20%3D%3D%3D%20%22error%22%20%3F%20404%20%3A%20200%2C%20evt.type%20%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%20%29%3B%0A%0A%09%09%09%09//%20Use%20native%20DOM%20manipulation%20to%20avoid%20our%20domManip%20AJAX%20trickery%0A%09%09%09%09document.head.appendChild%28%20script%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%2C%0A%09%09%09abort%3A%20function%28%29%20%7B%0A%09%09%09%09if%20%28%20callback%20%29%20%7B%0A%09%09%09%09%09callback%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0Avar%20oldCallbacks%20%3D%20%5B%5D%2C%0A%09rjsonp%20%3D%20/%28%3D%29%5C%3F%28%3F%3D%26%7C%24%29%7C%5C%3F%5C%3F/%3B%0A%0A//%20Default%20jsonp%20settings%0AjQuery.ajaxSetup%28%20%7B%0A%09jsonp%3A%20%22callback%22%2C%0A%09jsonpCallback%3A%20function%28%29%20%7B%0A%09%09var%20callback%20%3D%20oldCallbacks.pop%28%29%20%7C%7C%20%28%20jQuery.expando%20%2B%20%22_%22%20%2B%20%28%20nonce.guid%2B%2B%20%29%20%29%3B%0A%09%09this%5B%20callback%20%5D%20%3D%20true%3B%0A%09%09return%20callback%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Detect%2C%20normalize%20options%20and%20install%20callbacks%20for%20jsonp%20requests%0AjQuery.ajaxPrefilter%28%20%22json%20jsonp%22%2C%20function%28%20s%2C%20originalSettings%2C%20jqXHR%20%29%20%7B%0A%0A%09var%20callbackName%2C%20overwritten%2C%20responseContainer%2C%0A%09%09jsonProp%20%3D%20s.jsonp%20%21%3D%3D%20false%20%26%26%20%28%20rjsonp.test%28%20s.url%20%29%20%3F%0A%09%09%09%22url%22%20%3A%0A%09%09%09typeof%20s.data%20%3D%3D%3D%20%22string%22%20%26%26%0A%09%09%09%09%28%20s.contentType%20%7C%7C%20%22%22%20%29%0A%09%09%09%09%09.indexOf%28%20%22application/x-www-form-urlencoded%22%20%29%20%3D%3D%3D%200%20%26%26%0A%09%09%09%09rjsonp.test%28%20s.data%20%29%20%26%26%20%22data%22%0A%09%09%29%3B%0A%0A%09//%20Handle%20iff%20the%20expected%20data%20type%20is%20%22jsonp%22%20or%20we%20have%20a%20parameter%20to%20set%0A%09if%20%28%20jsonProp%20%7C%7C%20s.dataTypes%5B%200%20%5D%20%3D%3D%3D%20%22jsonp%22%20%29%20%7B%0A%0A%09%09//%20Get%20callback%20name%2C%20remembering%20preexisting%20value%20associated%20with%20it%0A%09%09callbackName%20%3D%20s.jsonpCallback%20%3D%20isFunction%28%20s.jsonpCallback%20%29%20%3F%0A%09%09%09s.jsonpCallback%28%29%20%3A%0A%09%09%09s.jsonpCallback%3B%0A%0A%09%09//%20Insert%20callback%20into%20url%20or%20form%20data%0A%09%09if%20%28%20jsonProp%20%29%20%7B%0A%09%09%09s%5B%20jsonProp%20%5D%20%3D%20s%5B%20jsonProp%20%5D.replace%28%20rjsonp%2C%20%22%241%22%20%2B%20callbackName%20%29%3B%0A%09%09%7D%20else%20if%20%28%20s.jsonp%20%21%3D%3D%20false%20%29%20%7B%0A%09%09%09s.url%20%2B%3D%20%28%20rquery.test%28%20s.url%20%29%20%3F%20%22%26%22%20%3A%20%22%3F%22%20%29%20%2B%20s.jsonp%20%2B%20%22%3D%22%20%2B%20callbackName%3B%0A%09%09%7D%0A%0A%09%09//%20Use%20data%20converter%20to%20retrieve%20json%20after%20script%20execution%0A%09%09s.converters%5B%20%22script%20json%22%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09if%20%28%20%21responseContainer%20%29%20%7B%0A%09%09%09%09jQuery.error%28%20callbackName%20%2B%20%22%20was%20not%20called%22%20%29%3B%0A%09%09%09%7D%0A%09%09%09return%20responseContainer%5B%200%20%5D%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Force%20json%20dataType%0A%09%09s.dataTypes%5B%200%20%5D%20%3D%20%22json%22%3B%0A%0A%09%09//%20Install%20callback%0A%09%09overwritten%20%3D%20window%5B%20callbackName%20%5D%3B%0A%09%09window%5B%20callbackName%20%5D%20%3D%20function%28%29%20%7B%0A%09%09%09responseContainer%20%3D%20arguments%3B%0A%09%09%7D%3B%0A%0A%09%09//%20Clean-up%20function%20%28fires%20after%20converters%29%0A%09%09jqXHR.always%28%20function%28%29%20%7B%0A%0A%09%09%09//%20If%20previous%20value%20didn%27t%20exist%20-%20remove%20it%0A%09%09%09if%20%28%20overwritten%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09jQuery%28%20window%20%29.removeProp%28%20callbackName%20%29%3B%0A%0A%09%09%09//%20Otherwise%20restore%20preexisting%20value%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09window%5B%20callbackName%20%5D%20%3D%20overwritten%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Save%20back%20as%20free%0A%09%09%09if%20%28%20s%5B%20callbackName%20%5D%20%29%20%7B%0A%0A%09%09%09%09//%20Make%20sure%20that%20re-using%20the%20options%20doesn%27t%20screw%20things%20around%0A%09%09%09%09s.jsonpCallback%20%3D%20originalSettings.jsonpCallback%3B%0A%0A%09%09%09%09//%20Save%20the%20callback%20name%20for%20future%20use%0A%09%09%09%09oldCallbacks.push%28%20callbackName%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09//%20Call%20if%20it%20was%20a%20function%20and%20we%20have%20a%20response%0A%09%09%09if%20%28%20responseContainer%20%26%26%20isFunction%28%20overwritten%20%29%20%29%20%7B%0A%09%09%09%09overwritten%28%20responseContainer%5B%200%20%5D%20%29%3B%0A%09%09%09%7D%0A%0A%09%09%09responseContainer%20%3D%20overwritten%20%3D%20undefined%3B%0A%09%09%7D%20%29%3B%0A%0A%09%09//%20Delegate%20to%20script%0A%09%09return%20%22script%22%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Safari%208%20only%0A//%20In%20Safari%208%20documents%20created%20via%20document.implementation.createHTMLDocument%0A//%20collapse%20sibling%20forms%3A%20the%20second%20one%20becomes%20a%20child%20of%20the%20first%20one.%0A//%20Because%20of%20that%2C%20this%20security%20measure%20has%20to%20be%20disabled%20in%20Safari%208.%0A//%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D137337%0Asupport.createHTMLDocument%20%3D%20%28%20function%28%29%20%7B%0A%09var%20body%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29.body%3B%0A%09body.innerHTML%20%3D%20%22%3Cform%3E%3C/form%3E%3Cform%3E%3C/form%3E%22%3B%0A%09return%20body.childNodes.length%20%3D%3D%3D%202%3B%0A%7D%20%29%28%29%3B%0A%0A%0A//%20Argument%20%22data%22%20should%20be%20string%20of%20html%0A//%20context%20%28optional%29%3A%20If%20specified%2C%20the%20fragment%20will%20be%20created%20in%20this%20context%2C%0A//%20defaults%20to%20document%0A//%20keepScripts%20%28optional%29%3A%20If%20true%2C%20will%20include%20scripts%20passed%20in%20the%20html%20string%0AjQuery.parseHTML%20%3D%20function%28%20data%2C%20context%2C%20keepScripts%20%29%20%7B%0A%09if%20%28%20typeof%20data%20%21%3D%3D%20%22string%22%20%29%20%7B%0A%09%09return%20%5B%5D%3B%0A%09%7D%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22boolean%22%20%29%20%7B%0A%09%09keepScripts%20%3D%20context%3B%0A%09%09context%20%3D%20false%3B%0A%09%7D%0A%0A%09var%20base%2C%20parsed%2C%20scripts%3B%0A%0A%09if%20%28%20%21context%20%29%20%7B%0A%0A%09%09//%20Stop%20scripts%20or%20inline%20event%20handlers%20from%20being%20executed%20immediately%0A%09%09//%20by%20using%20document.implementation%0A%09%09if%20%28%20support.createHTMLDocument%20%29%20%7B%0A%09%09%09context%20%3D%20document.implementation.createHTMLDocument%28%20%22%22%20%29%3B%0A%0A%09%09%09//%20Set%20the%20base%20href%20for%20the%20created%20document%0A%09%09%09//%20so%20any%20parsed%20elements%20with%20URLs%0A%09%09%09//%20are%20based%20on%20the%20document%27s%20URL%20%28gh-2965%29%0A%09%09%09base%20%3D%20context.createElement%28%20%22base%22%20%29%3B%0A%09%09%09base.href%20%3D%20document.location.href%3B%0A%09%09%09context.head.appendChild%28%20base%20%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09context%20%3D%20document%3B%0A%09%09%7D%0A%09%7D%0A%0A%09parsed%20%3D%20rsingleTag.exec%28%20data%20%29%3B%0A%09scripts%20%3D%20%21keepScripts%20%26%26%20%5B%5D%3B%0A%0A%09//%20Single%20tag%0A%09if%20%28%20parsed%20%29%20%7B%0A%09%09return%20%5B%20context.createElement%28%20parsed%5B%201%20%5D%20%29%20%5D%3B%0A%09%7D%0A%0A%09parsed%20%3D%20buildFragment%28%20%5B%20data%20%5D%2C%20context%2C%20scripts%20%29%3B%0A%0A%09if%20%28%20scripts%20%26%26%20scripts.length%20%29%20%7B%0A%09%09jQuery%28%20scripts%20%29.remove%28%29%3B%0A%09%7D%0A%0A%09return%20jQuery.merge%28%20%5B%5D%2C%20parsed.childNodes%20%29%3B%0A%7D%3B%0A%0A%0A/%2A%2A%0A%20%2A%20Load%20a%20url%20into%20a%20page%0A%20%2A/%0AjQuery.fn.load%20%3D%20function%28%20url%2C%20params%2C%20callback%20%29%20%7B%0A%09var%20selector%2C%20type%2C%20response%2C%0A%09%09self%20%3D%20this%2C%0A%09%09off%20%3D%20url.indexOf%28%20%22%20%22%20%29%3B%0A%0A%09if%20%28%20off%20%3E%20-1%20%29%20%7B%0A%09%09selector%20%3D%20stripAndCollapse%28%20url.slice%28%20off%20%29%20%29%3B%0A%09%09url%20%3D%20url.slice%28%200%2C%20off%20%29%3B%0A%09%7D%0A%0A%09//%20If%20it%27s%20a%20function%0A%09if%20%28%20isFunction%28%20params%20%29%20%29%20%7B%0A%0A%09%09//%20We%20assume%20that%20it%27s%20the%20callback%0A%09%09callback%20%3D%20params%3B%0A%09%09params%20%3D%20undefined%3B%0A%0A%09//%20Otherwise%2C%20build%20a%20param%20string%0A%09%7D%20else%20if%20%28%20params%20%26%26%20typeof%20params%20%3D%3D%3D%20%22object%22%20%29%20%7B%0A%09%09type%20%3D%20%22POST%22%3B%0A%09%7D%0A%0A%09//%20If%20we%20have%20elements%20to%20modify%2C%20make%20the%20request%0A%09if%20%28%20self.length%20%3E%200%20%29%20%7B%0A%09%09jQuery.ajax%28%20%7B%0A%09%09%09url%3A%20url%2C%0A%0A%09%09%09//%20If%20%22type%22%20variable%20is%20undefined%2C%20then%20%22GET%22%20method%20will%20be%20used.%0A%09%09%09//%20Make%20value%20of%20this%20field%20explicit%20since%0A%09%09%09//%20user%20can%20override%20it%20through%20ajaxSetup%20method%0A%09%09%09type%3A%20type%20%7C%7C%20%22GET%22%2C%0A%09%09%09dataType%3A%20%22html%22%2C%0A%09%09%09data%3A%20params%0A%09%09%7D%20%29.done%28%20function%28%20responseText%20%29%20%7B%0A%0A%09%09%09//%20Save%20response%20for%20use%20in%20complete%20callback%0A%09%09%09response%20%3D%20arguments%3B%0A%0A%09%09%09self.html%28%20selector%20%3F%0A%0A%09%09%09%09//%20If%20a%20selector%20was%20specified%2C%20locate%20the%20right%20elements%20in%20a%20dummy%20div%0A%09%09%09%09//%20Exclude%20scripts%20to%20avoid%20IE%20%27Permission%20Denied%27%20errors%0A%09%09%09%09jQuery%28%20%22%3Cdiv%3E%22%20%29.append%28%20jQuery.parseHTML%28%20responseText%20%29%20%29.find%28%20selector%20%29%20%3A%0A%0A%09%09%09%09//%20Otherwise%20use%20the%20full%20result%0A%09%09%09%09responseText%20%29%3B%0A%0A%09%09//%20If%20the%20request%20succeeds%2C%20this%20function%20gets%20%22data%22%2C%20%22status%22%2C%20%22jqXHR%22%0A%09%09//%20but%20they%20are%20ignored%20because%20response%20was%20set%20above.%0A%09%09//%20If%20it%20fails%2C%20this%20function%20gets%20%22jqXHR%22%2C%20%22status%22%2C%20%22error%22%0A%09%09%7D%20%29.always%28%20callback%20%26%26%20function%28%20jqXHR%2C%20status%20%29%20%7B%0A%09%09%09self.each%28%20function%28%29%20%7B%0A%09%09%09%09callback.apply%28%20this%2C%20response%20%7C%7C%20%5B%20jqXHR.responseText%2C%20status%2C%20jqXHR%20%5D%20%29%3B%0A%09%09%09%7D%20%29%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%0A%09return%20this%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.expr.pseudos.animated%20%3D%20function%28%20elem%20%29%20%7B%0A%09return%20jQuery.grep%28%20jQuery.timers%2C%20function%28%20fn%20%29%20%7B%0A%09%09return%20elem%20%3D%3D%3D%20fn.elem%3B%0A%09%7D%20%29.length%3B%0A%7D%3B%0A%0A%0A%0A%0AjQuery.offset%20%3D%20%7B%0A%09setOffset%3A%20function%28%20elem%2C%20options%2C%20i%20%29%20%7B%0A%09%09var%20curPosition%2C%20curLeft%2C%20curCSSTop%2C%20curTop%2C%20curOffset%2C%20curCSSLeft%2C%20calculatePosition%2C%0A%09%09%09position%20%3D%20jQuery.css%28%20elem%2C%20%22position%22%20%29%2C%0A%09%09%09curElem%20%3D%20jQuery%28%20elem%20%29%2C%0A%09%09%09props%20%3D%20%7B%7D%3B%0A%0A%09%09//%20Set%20position%20first%2C%20in-case%20top/left%20are%20set%20even%20on%20static%20elem%0A%09%09if%20%28%20position%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09elem.style.position%20%3D%20%22relative%22%3B%0A%09%09%7D%0A%0A%09%09curOffset%20%3D%20curElem.offset%28%29%3B%0A%09%09curCSSTop%20%3D%20jQuery.css%28%20elem%2C%20%22top%22%20%29%3B%0A%09%09curCSSLeft%20%3D%20jQuery.css%28%20elem%2C%20%22left%22%20%29%3B%0A%09%09calculatePosition%20%3D%20%28%20position%20%3D%3D%3D%20%22absolute%22%20%7C%7C%20position%20%3D%3D%3D%20%22fixed%22%20%29%20%26%26%0A%09%09%09%28%20curCSSTop%20%2B%20curCSSLeft%20%29.indexOf%28%20%22auto%22%20%29%20%3E%20-1%3B%0A%0A%09%09//%20Need%20to%20be%20able%20to%20calculate%20position%20if%20either%0A%09%09//%20top%20or%20left%20is%20auto%20and%20position%20is%20either%20absolute%20or%20fixed%0A%09%09if%20%28%20calculatePosition%20%29%20%7B%0A%09%09%09curPosition%20%3D%20curElem.position%28%29%3B%0A%09%09%09curTop%20%3D%20curPosition.top%3B%0A%09%09%09curLeft%20%3D%20curPosition.left%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09curTop%20%3D%20parseFloat%28%20curCSSTop%20%29%20%7C%7C%200%3B%0A%09%09%09curLeft%20%3D%20parseFloat%28%20curCSSLeft%20%29%20%7C%7C%200%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20isFunction%28%20options%20%29%20%29%20%7B%0A%0A%09%09%09//%20Use%20jQuery.extend%20here%20to%20allow%20modification%20of%20coordinates%20argument%20%28gh-1848%29%0A%09%09%09options%20%3D%20options.call%28%20elem%2C%20i%2C%20jQuery.extend%28%20%7B%7D%2C%20curOffset%20%29%20%29%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20options.top%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.top%20%3D%20%28%20options.top%20-%20curOffset.top%20%29%20%2B%20curTop%3B%0A%09%09%7D%0A%09%09if%20%28%20options.left%20%21%3D%20null%20%29%20%7B%0A%09%09%09props.left%20%3D%20%28%20options.left%20-%20curOffset.left%20%29%20%2B%20curLeft%3B%0A%09%09%7D%0A%0A%09%09if%20%28%20%22using%22%20in%20options%20%29%20%7B%0A%09%09%09options.using.call%28%20elem%2C%20props%20%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09if%20%28%20typeof%20props.top%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.top%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20typeof%20props.left%20%3D%3D%3D%20%22number%22%20%29%20%7B%0A%09%09%09%09props.left%20%2B%3D%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09curElem.css%28%20props%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09//%20offset%28%29%20relates%20an%20element%27s%20border%20box%20to%20the%20document%20origin%0A%09offset%3A%20function%28%20options%20%29%20%7B%0A%0A%09%09//%20Preserve%20chaining%20for%20setter%0A%09%09if%20%28%20arguments.length%20%29%20%7B%0A%09%09%09return%20options%20%3D%3D%3D%20undefined%20%3F%0A%09%09%09%09this%20%3A%0A%09%09%09%09this.each%28%20function%28%20i%20%29%20%7B%0A%09%09%09%09%09jQuery.offset.setOffset%28%20this%2C%20options%2C%20i%20%29%3B%0A%09%09%09%09%7D%20%29%3B%0A%09%09%7D%0A%0A%09%09var%20rect%2C%20win%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%3B%0A%0A%09%09if%20%28%20%21elem%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09//%20Return%20zeros%20for%20disconnected%20and%20hidden%20%28display%3A%20none%29%20elements%20%28gh-2310%29%0A%09%09//%20Support%3A%20IE%20%3C%3D11%20only%0A%09%09//%20Running%20getBoundingClientRect%20on%20a%0A%09%09//%20disconnected%20node%20in%20IE%20throws%20an%20error%0A%09%09if%20%28%20%21elem.getClientRects%28%29.length%20%29%20%7B%0A%09%09%09return%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%09%09%7D%0A%0A%09%09//%20Get%20document-relative%20position%20by%20adding%20viewport%20scroll%20to%20viewport-relative%20gBCR%0A%09%09rect%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%09%09win%20%3D%20elem.ownerDocument.defaultView%3B%0A%09%09return%20%7B%0A%09%09%09top%3A%20rect.top%20%2B%20win.pageYOffset%2C%0A%09%09%09left%3A%20rect.left%20%2B%20win.pageXOffset%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20position%28%29%20relates%20an%20element%27s%20margin%20box%20to%20its%20offset%20parent%27s%20padding%20box%0A%09//%20This%20corresponds%20to%20the%20behavior%20of%20CSS%20absolute%20positioning%0A%09position%3A%20function%28%29%20%7B%0A%09%09if%20%28%20%21this%5B%200%20%5D%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09var%20offsetParent%2C%20offset%2C%20doc%2C%0A%09%09%09elem%20%3D%20this%5B%200%20%5D%2C%0A%09%09%09parentOffset%20%3D%20%7B%20top%3A%200%2C%20left%3A%200%20%7D%3B%0A%0A%09%09//%20position%3Afixed%20elements%20are%20offset%20from%20the%20viewport%2C%20which%20itself%20always%20has%20zero%20offset%0A%09%09if%20%28%20jQuery.css%28%20elem%2C%20%22position%22%20%29%20%3D%3D%3D%20%22fixed%22%20%29%20%7B%0A%0A%09%09%09//%20Assume%20position%3Afixed%20implies%20availability%20of%20getBoundingClientRect%0A%09%09%09offset%20%3D%20elem.getBoundingClientRect%28%29%3B%0A%0A%09%09%7D%20else%20%7B%0A%09%09%09offset%20%3D%20this.offset%28%29%3B%0A%0A%09%09%09//%20Account%20for%20the%20%2Areal%2A%20offset%20parent%2C%20which%20can%20be%20the%20document%20or%20its%20root%20element%0A%09%09%09//%20when%20a%20statically%20positioned%20element%20is%20identified%0A%09%09%09doc%20%3D%20elem.ownerDocument%3B%0A%09%09%09offsetParent%20%3D%20elem.offsetParent%20%7C%7C%20doc.documentElement%3B%0A%09%09%09while%20%28%20offsetParent%20%26%26%0A%09%09%09%09%28%20offsetParent%20%3D%3D%3D%20doc.body%20%7C%7C%20offsetParent%20%3D%3D%3D%20doc.documentElement%20%29%20%26%26%0A%09%09%09%09jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%0A%09%09%09%09offsetParent%20%3D%20offsetParent.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%20%28%20offsetParent%20%26%26%20offsetParent%20%21%3D%3D%20elem%20%26%26%20offsetParent.nodeType%20%3D%3D%3D%201%20%29%20%7B%0A%0A%09%09%09%09//%20Incorporate%20borders%20into%20its%20offset%2C%20since%20they%20are%20outside%20its%20content%20origin%0A%09%09%09%09parentOffset%20%3D%20jQuery%28%20offsetParent%20%29.offset%28%29%3B%0A%09%09%09%09parentOffset.top%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderTopWidth%22%2C%20true%20%29%3B%0A%09%09%09%09parentOffset.left%20%2B%3D%20jQuery.css%28%20offsetParent%2C%20%22borderLeftWidth%22%2C%20true%20%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%0A%09%09//%20Subtract%20parent%20offsets%20and%20element%20margins%0A%09%09return%20%7B%0A%09%09%09top%3A%20offset.top%20-%20parentOffset.top%20-%20jQuery.css%28%20elem%2C%20%22marginTop%22%2C%20true%20%29%2C%0A%09%09%09left%3A%20offset.left%20-%20parentOffset.left%20-%20jQuery.css%28%20elem%2C%20%22marginLeft%22%2C%20true%20%29%0A%09%09%7D%3B%0A%09%7D%2C%0A%0A%09//%20This%20method%20will%20return%20documentElement%20in%20the%20following%20cases%3A%0A%09//%201%29%20For%20the%20element%20inside%20the%20iframe%20without%20offsetParent%2C%20this%20method%20will%20return%0A%09//%20%20%20%20documentElement%20of%20the%20parent%20window%0A%09//%202%29%20For%20the%20hidden%20or%20detached%20element%0A%09//%203%29%20For%20body%20or%20html%20element%2C%20i.e.%20in%20case%20of%20the%20html%20node%20-%20it%20will%20return%20itself%0A%09//%0A%09//%20but%20those%20exceptions%20were%20never%20presented%20as%20a%20real%20life%20use-cases%0A%09//%20and%20might%20be%20considered%20as%20more%20preferable%20results.%0A%09//%0A%09//%20This%20logic%2C%20however%2C%20is%20not%20guaranteed%20and%20can%20change%20at%20any%20point%20in%20the%20future%0A%09offsetParent%3A%20function%28%29%20%7B%0A%09%09return%20this.map%28%20function%28%29%20%7B%0A%09%09%09var%20offsetParent%20%3D%20this.offsetParent%3B%0A%0A%09%09%09while%20%28%20offsetParent%20%26%26%20jQuery.css%28%20offsetParent%2C%20%22position%22%20%29%20%3D%3D%3D%20%22static%22%20%29%20%7B%0A%09%09%09%09offsetParent%20%3D%20offsetParent.offsetParent%3B%0A%09%09%09%7D%0A%0A%09%09%09return%20offsetParent%20%7C%7C%20documentElement%3B%0A%09%09%7D%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0A//%20Create%20scrollLeft%20and%20scrollTop%20methods%0AjQuery.each%28%20%7B%20scrollLeft%3A%20%22pageXOffset%22%2C%20scrollTop%3A%20%22pageYOffset%22%20%7D%2C%20function%28%20method%2C%20prop%20%29%20%7B%0A%09var%20top%20%3D%20%22pageYOffset%22%20%3D%3D%3D%20prop%3B%0A%0A%09jQuery.fn%5B%20method%20%5D%20%3D%20function%28%20val%20%29%20%7B%0A%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20method%2C%20val%20%29%20%7B%0A%0A%09%09%09//%20Coalesce%20documents%20and%20windows%0A%09%09%09var%20win%3B%0A%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem%3B%0A%09%09%09%7D%20else%20if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09win%20%3D%20elem.defaultView%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20val%20%3D%3D%3D%20undefined%20%29%20%7B%0A%09%09%09%09return%20win%20%3F%20win%5B%20prop%20%5D%20%3A%20elem%5B%20method%20%5D%3B%0A%09%09%09%7D%0A%0A%09%09%09if%20%28%20win%20%29%20%7B%0A%09%09%09%09win.scrollTo%28%0A%09%09%09%09%09%21top%20%3F%20val%20%3A%20win.pageXOffset%2C%0A%09%09%09%09%09top%20%3F%20val%20%3A%20win.pageYOffset%0A%09%09%09%09%29%3B%0A%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%09elem%5B%20method%20%5D%20%3D%20val%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20method%2C%20val%2C%20arguments.length%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A//%20Support%3A%20Safari%20%3C%3D7%20-%209.1%2C%20Chrome%20%3C%3D37%20-%2049%0A//%20Add%20the%20top/left%20cssHooks%20using%20jQuery.fn.position%0A//%20Webkit%20bug%3A%20https%3A//bugs.webkit.org/show_bug.cgi%3Fid%3D29084%0A//%20Blink%20bug%3A%20https%3A//bugs.chromium.org/p/chromium/issues/detail%3Fid%3D589347%0A//%20getComputedStyle%20returns%20percent%20when%20specified%20for%20top/left/bottom/right%3B%0A//%20rather%20than%20make%20the%20css%20module%20depend%20on%20the%20offset%20module%2C%20just%20check%20for%20it%20here%0AjQuery.each%28%20%5B%20%22top%22%2C%20%22left%22%20%5D%2C%20function%28%20_i%2C%20prop%20%29%20%7B%0A%09jQuery.cssHooks%5B%20prop%20%5D%20%3D%20addGetHookIf%28%20support.pixelPosition%2C%0A%09%09function%28%20elem%2C%20computed%20%29%20%7B%0A%09%09%09if%20%28%20computed%20%29%20%7B%0A%09%09%09%09computed%20%3D%20curCSS%28%20elem%2C%20prop%20%29%3B%0A%0A%09%09%09%09//%20If%20curCSS%20returns%20percentage%2C%20fallback%20to%20offset%0A%09%09%09%09return%20rnumnonpx.test%28%20computed%20%29%20%3F%0A%09%09%09%09%09jQuery%28%20elem%20%29.position%28%29%5B%20prop%20%5D%20%2B%20%22px%22%20%3A%0A%09%09%09%09%09computed%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%29%3B%0A%7D%20%29%3B%0A%0A%0A//%20Create%20innerHeight%2C%20innerWidth%2C%20height%2C%20width%2C%20outerHeight%20and%20outerWidth%20methods%0AjQuery.each%28%20%7B%20Height%3A%20%22height%22%2C%20Width%3A%20%22width%22%20%7D%2C%20function%28%20name%2C%20type%20%29%20%7B%0A%09jQuery.each%28%20%7B%20padding%3A%20%22inner%22%20%2B%20name%2C%20content%3A%20type%2C%20%22%22%3A%20%22outer%22%20%2B%20name%20%7D%2C%0A%09%09function%28%20defaultExtra%2C%20funcName%20%29%20%7B%0A%0A%09%09//%20Margin%20is%20only%20for%20outerHeight%2C%20outerWidth%0A%09%09jQuery.fn%5B%20funcName%20%5D%20%3D%20function%28%20margin%2C%20value%20%29%20%7B%0A%09%09%09var%20chainable%20%3D%20arguments.length%20%26%26%20%28%20defaultExtra%20%7C%7C%20typeof%20margin%20%21%3D%3D%20%22boolean%22%20%29%2C%0A%09%09%09%09extra%20%3D%20defaultExtra%20%7C%7C%20%28%20margin%20%3D%3D%3D%20true%20%7C%7C%20value%20%3D%3D%3D%20true%20%3F%20%22margin%22%20%3A%20%22border%22%20%29%3B%0A%0A%09%09%09return%20access%28%20this%2C%20function%28%20elem%2C%20type%2C%20value%20%29%20%7B%0A%09%09%09%09var%20doc%3B%0A%0A%09%09%09%09if%20%28%20isWindow%28%20elem%20%29%20%29%20%7B%0A%0A%09%09%09%09%09//%20%24%28%20window%20%29.outerWidth/Height%20return%20w/h%20including%20scrollbars%20%28gh-1729%29%0A%09%09%09%09%09return%20funcName.indexOf%28%20%22outer%22%20%29%20%3D%3D%3D%200%20%3F%0A%09%09%09%09%09%09elem%5B%20%22inner%22%20%2B%20name%20%5D%20%3A%0A%09%09%09%09%09%09elem.document.documentElement%5B%20%22client%22%20%2B%20name%20%5D%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09//%20Get%20document%20width%20or%20height%0A%09%09%09%09if%20%28%20elem.nodeType%20%3D%3D%3D%209%20%29%20%7B%0A%09%09%09%09%09doc%20%3D%20elem.documentElement%3B%0A%0A%09%09%09%09%09//%20Either%20scroll%5BWidth/Height%5D%20or%20offset%5BWidth/Height%5D%20or%20client%5BWidth/Height%5D%2C%0A%09%09%09%09%09//%20whichever%20is%20greatest%0A%09%09%09%09%09return%20Math.max%28%0A%09%09%09%09%09%09elem.body%5B%20%22scroll%22%20%2B%20name%20%5D%2C%20doc%5B%20%22scroll%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09elem.body%5B%20%22offset%22%20%2B%20name%20%5D%2C%20doc%5B%20%22offset%22%20%2B%20name%20%5D%2C%0A%09%09%09%09%09%09doc%5B%20%22client%22%20%2B%20name%20%5D%0A%09%09%09%09%09%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09return%20value%20%3D%3D%3D%20undefined%20%3F%0A%0A%09%09%09%09%09//%20Get%20width%20or%20height%20on%20the%20element%2C%20requesting%20but%20not%20forcing%20parseFloat%0A%09%09%09%09%09jQuery.css%28%20elem%2C%20type%2C%20extra%20%29%20%3A%0A%0A%09%09%09%09%09//%20Set%20width%20or%20height%20on%20the%20element%0A%09%09%09%09%09jQuery.style%28%20elem%2C%20type%2C%20value%2C%20extra%20%29%3B%0A%09%09%09%7D%2C%20type%2C%20chainable%20%3F%20margin%20%3A%20undefined%2C%20chainable%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%7D%20%29%3B%0A%0A%0AjQuery.each%28%20%5B%0A%09%22ajaxStart%22%2C%0A%09%22ajaxStop%22%2C%0A%09%22ajaxComplete%22%2C%0A%09%22ajaxError%22%2C%0A%09%22ajaxSuccess%22%2C%0A%09%22ajaxSend%22%0A%5D%2C%20function%28%20_i%2C%20type%20%29%20%7B%0A%09jQuery.fn%5B%20type%20%5D%20%3D%20function%28%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20type%2C%20fn%20%29%3B%0A%09%7D%3B%0A%7D%20%29%3B%0A%0A%0A%0A%0AjQuery.fn.extend%28%20%7B%0A%0A%09bind%3A%20function%28%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20null%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09unbind%3A%20function%28%20types%2C%20fn%20%29%20%7B%0A%09%09return%20this.off%28%20types%2C%20null%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09delegate%3A%20function%28%20selector%2C%20types%2C%20data%2C%20fn%20%29%20%7B%0A%09%09return%20this.on%28%20types%2C%20selector%2C%20data%2C%20fn%20%29%3B%0A%09%7D%2C%0A%09undelegate%3A%20function%28%20selector%2C%20types%2C%20fn%20%29%20%7B%0A%0A%09%09//%20%28%20namespace%20%29%20or%20%28%20selector%2C%20types%20%5B%2C%20fn%5D%20%29%0A%09%09return%20arguments.length%20%3D%3D%3D%201%20%3F%0A%09%09%09this.off%28%20selector%2C%20%22%2A%2A%22%20%29%20%3A%0A%09%09%09this.off%28%20types%2C%20selector%20%7C%7C%20%22%2A%2A%22%2C%20fn%20%29%3B%0A%09%7D%2C%0A%0A%09hover%3A%20function%28%20fnOver%2C%20fnOut%20%29%20%7B%0A%09%09return%20this.mouseenter%28%20fnOver%20%29.mouseleave%28%20fnOut%20%7C%7C%20fnOver%20%29%3B%0A%09%7D%0A%7D%20%29%3B%0A%0AjQuery.each%28%20%28%20%22blur%20focus%20focusin%20focusout%20resize%20scroll%20click%20dblclick%20%22%20%2B%0A%09%22mousedown%20mouseup%20mousemove%20mouseover%20mouseout%20mouseenter%20mouseleave%20%22%20%2B%0A%09%22change%20select%20submit%20keydown%20keypress%20keyup%20contextmenu%22%20%29.split%28%20%22%20%22%20%29%2C%0A%09function%28%20_i%2C%20name%20%29%20%7B%0A%0A%09%09//%20Handle%20event%20binding%0A%09%09jQuery.fn%5B%20name%20%5D%20%3D%20function%28%20data%2C%20fn%20%29%20%7B%0A%09%09%09return%20arguments.length%20%3E%200%20%3F%0A%09%09%09%09this.on%28%20name%2C%20null%2C%20data%2C%20fn%20%29%20%3A%0A%09%09%09%09this.trigger%28%20name%20%29%3B%0A%09%09%7D%3B%0A%09%7D%20%29%3B%0A%0A%0A%0A%0A//%20Support%3A%20Android%20%3C%3D4.0%20only%0A//%20Make%20sure%20we%20trim%20BOM%20and%20NBSP%0Avar%20rtrim%20%3D%20/%5E%5B%5Cs%5CuFEFF%5CxA0%5D%2B%7C%5B%5Cs%5CuFEFF%5CxA0%5D%2B%24/g%3B%0A%0A//%20Bind%20a%20function%20to%20a%20context%2C%20optionally%20partially%20applying%20any%0A//%20arguments.%0A//%20jQuery.proxy%20is%20deprecated%20to%20promote%20standards%20%28specifically%20Function%23bind%29%0A//%20However%2C%20it%20is%20not%20slated%20for%20removal%20any%20time%20soon%0AjQuery.proxy%20%3D%20function%28%20fn%2C%20context%20%29%20%7B%0A%09var%20tmp%2C%20args%2C%20proxy%3B%0A%0A%09if%20%28%20typeof%20context%20%3D%3D%3D%20%22string%22%20%29%20%7B%0A%09%09tmp%20%3D%20fn%5B%20context%20%5D%3B%0A%09%09context%20%3D%20fn%3B%0A%09%09fn%20%3D%20tmp%3B%0A%09%7D%0A%0A%09//%20Quick%20check%20to%20determine%20if%20target%20is%20callable%2C%20in%20the%20spec%0A%09//%20this%20throws%20a%20TypeError%2C%20but%20we%20will%20just%20return%20undefined.%0A%09if%20%28%20%21isFunction%28%20fn%20%29%20%29%20%7B%0A%09%09return%20undefined%3B%0A%09%7D%0A%0A%09//%20Simulated%20bind%0A%09args%20%3D%20slice.call%28%20arguments%2C%202%20%29%3B%0A%09proxy%20%3D%20function%28%29%20%7B%0A%09%09return%20fn.apply%28%20context%20%7C%7C%20this%2C%20args.concat%28%20slice.call%28%20arguments%20%29%20%29%20%29%3B%0A%09%7D%3B%0A%0A%09//%20Set%20the%20guid%20of%20unique%20handler%20to%20the%20same%20of%20original%20handler%2C%20so%20it%20can%20be%20removed%0A%09proxy.guid%20%3D%20fn.guid%20%3D%20fn.guid%20%7C%7C%20jQuery.guid%2B%2B%3B%0A%0A%09return%20proxy%3B%0A%7D%3B%0A%0AjQuery.holdReady%20%3D%20function%28%20hold%20%29%20%7B%0A%09if%20%28%20hold%20%29%20%7B%0A%09%09jQuery.readyWait%2B%2B%3B%0A%09%7D%20else%20%7B%0A%09%09jQuery.ready%28%20true%20%29%3B%0A%09%7D%0A%7D%3B%0AjQuery.isArray%20%3D%20Array.isArray%3B%0AjQuery.parseJSON%20%3D%20JSON.parse%3B%0AjQuery.nodeName%20%3D%20nodeName%3B%0AjQuery.isFunction%20%3D%20isFunction%3B%0AjQuery.isWindow%20%3D%20isWindow%3B%0AjQuery.camelCase%20%3D%20camelCase%3B%0AjQuery.type%20%3D%20toType%3B%0A%0AjQuery.now%20%3D%20Date.now%3B%0A%0AjQuery.isNumeric%20%3D%20function%28%20obj%20%29%20%7B%0A%0A%09//%20As%20of%20jQuery%203.0%2C%20isNumeric%20is%20limited%20to%0A%09//%20strings%20and%20numbers%20%28primitives%20or%20objects%29%0A%09//%20that%20can%20be%20coerced%20to%20finite%20numbers%20%28gh-2662%29%0A%09var%20type%20%3D%20jQuery.type%28%20obj%20%29%3B%0A%09return%20%28%20type%20%3D%3D%3D%20%22number%22%20%7C%7C%20type%20%3D%3D%3D%20%22string%22%20%29%20%26%26%0A%0A%09%09//%20parseFloat%20NaNs%20numeric-cast%20false%20positives%20%28%22%22%29%0A%09%09//%20...but%20misinterprets%20leading-number%20strings%2C%20particularly%20hex%20literals%20%28%220x...%22%29%0A%09%09//%20subtraction%20forces%20infinities%20to%20NaN%0A%09%09%21isNaN%28%20obj%20-%20parseFloat%28%20obj%20%29%20%29%3B%0A%7D%3B%0A%0AjQuery.trim%20%3D%20function%28%20text%20%29%20%7B%0A%09return%20text%20%3D%3D%20null%20%3F%0A%09%09%22%22%20%3A%0A%09%09%28%20text%20%2B%20%22%22%20%29.replace%28%20rtrim%2C%20%22%22%20%29%3B%0A%7D%3B%0A%0A%0A%0A//%20Register%20as%20a%20named%20AMD%20module%2C%20since%20jQuery%20can%20be%20concatenated%20with%20other%0A//%20files%20that%20may%20use%20define%2C%20but%20not%20via%20a%20proper%20concatenation%20script%20that%0A//%20understands%20anonymous%20AMD%20modules.%20A%20named%20AMD%20is%20safest%20and%20most%20robust%0A//%20way%20to%20register.%20Lowercase%20jquery%20is%20used%20because%20AMD%20module%20names%20are%0A//%20derived%20from%20file%20names%2C%20and%20jQuery%20is%20normally%20delivered%20in%20a%20lowercase%0A//%20file%20name.%20Do%20this%20after%20creating%20the%20global%20so%20that%20if%20an%20AMD%20module%20wants%0A//%20to%20call%20noConflict%20to%20hide%20this%20version%20of%20jQuery%2C%20it%20will%20work.%0A%0A//%20Note%20that%20for%20maximum%20portability%2C%20libraries%20that%20are%20not%20jQuery%20should%0A//%20declare%20themselves%20as%20anonymous%20modules%2C%20and%20avoid%20setting%20a%20global%20if%20an%0A//%20AMD%20loader%20is%20present.%20jQuery%20is%20a%20special%20case.%20For%20more%20information%2C%20see%0A//%20https%3A//github.com/jrburke/requirejs/wiki/Updating-existing-libraries%23wiki-anon%0A%0Aif%20%28%20typeof%20define%20%3D%3D%3D%20%22function%22%20%26%26%20define.amd%20%29%20%7B%0A%09define%28%20%22jquery%22%2C%20%5B%5D%2C%20function%28%29%20%7B%0A%09%09return%20jQuery%3B%0A%09%7D%20%29%3B%0A%7D%0A%0A%0A%0A%0Avar%0A%0A%09//%20Map%20over%20jQuery%20in%20case%20of%20overwrite%0A%09_jQuery%20%3D%20window.jQuery%2C%0A%0A%09//%20Map%20over%20the%20%24%20in%20case%20of%20overwrite%0A%09_%24%20%3D%20window.%24%3B%0A%0AjQuery.noConflict%20%3D%20function%28%20deep%20%29%20%7B%0A%09if%20%28%20window.%24%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.%24%20%3D%20_%24%3B%0A%09%7D%0A%0A%09if%20%28%20deep%20%26%26%20window.jQuery%20%3D%3D%3D%20jQuery%20%29%20%7B%0A%09%09window.jQuery%20%3D%20_jQuery%3B%0A%09%7D%0A%0A%09return%20jQuery%3B%0A%7D%3B%0A%0A//%20Expose%20jQuery%20and%20%24%20identifiers%2C%20even%20in%20AMD%0A//%20%28%237102%23comment%3A10%2C%20https%3A//github.com/jquery/jquery/pull/557%29%0A//%20and%20CommonJS%20for%20browser%20emulators%20%28%2313566%29%0Aif%20%28%20typeof%20noGlobal%20%3D%3D%3D%20%22undefined%22%20%29%20%7B%0A%09window.jQuery%20%3D%20window.%24%20%3D%20jQuery%3B%0A%7D%0A%0A%0A%0A%0Areturn%20jQuery%3B%0A%7D%20%29%3B%0A"></script><!--URL:_static/jquery.js-->
+<script src="data:application/javascript,//%20%20%20%20%20Underscore.js%201.9.1%0A//%20%20%20%20%20http%3A//underscorejs.org%0A//%20%20%20%20%20%28c%29%202009-2018%20Jeremy%20Ashkenas%2C%20DocumentCloud%20and%20Investigative%20Reporters%20%26%20Editors%0A//%20%20%20%20%20Underscore%20may%20be%20freely%20distributed%20under%20the%20MIT%20license.%0A%0A%28function%28%29%20%7B%0A%0A%20%20//%20Baseline%20setup%0A%20%20//%20--------------%0A%0A%20%20//%20Establish%20the%20root%20object%2C%20%60window%60%20%28%60self%60%29%20in%20the%20browser%2C%20%60global%60%0A%20%20//%20on%20the%20server%2C%20or%20%60this%60%20in%20some%20virtual%20machines.%20We%20use%20%60self%60%0A%20%20//%20instead%20of%20%60window%60%20for%20%60WebWorker%60%20support.%0A%20%20var%20root%20%3D%20typeof%20self%20%3D%3D%20%27object%27%20%26%26%20self.self%20%3D%3D%3D%20self%20%26%26%20self%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20typeof%20global%20%3D%3D%20%27object%27%20%26%26%20global.global%20%3D%3D%3D%20global%20%26%26%20global%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20this%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%7D%3B%0A%0A%20%20//%20Save%20the%20previous%20value%20of%20the%20%60_%60%20variable.%0A%20%20var%20previousUnderscore%20%3D%20root._%3B%0A%0A%20%20//%20Save%20bytes%20in%20the%20minified%20%28but%20not%20gzipped%29%20version%3A%0A%20%20var%20ArrayProto%20%3D%20Array.prototype%2C%20ObjProto%20%3D%20Object.prototype%3B%0A%20%20var%20SymbolProto%20%3D%20typeof%20Symbol%20%21%3D%3D%20%27undefined%27%20%3F%20Symbol.prototype%20%3A%20null%3B%0A%0A%20%20//%20Create%20quick%20reference%20variables%20for%20speed%20access%20to%20core%20prototypes.%0A%20%20var%20push%20%3D%20ArrayProto.push%2C%0A%20%20%20%20%20%20slice%20%3D%20ArrayProto.slice%2C%0A%20%20%20%20%20%20toString%20%3D%20ObjProto.toString%2C%0A%20%20%20%20%20%20hasOwnProperty%20%3D%20ObjProto.hasOwnProperty%3B%0A%0A%20%20//%20All%20%2A%2AECMAScript%205%2A%2A%20native%20function%20implementations%20that%20we%20hope%20to%20use%0A%20%20//%20are%20declared%20here.%0A%20%20var%20nativeIsArray%20%3D%20Array.isArray%2C%0A%20%20%20%20%20%20nativeKeys%20%3D%20Object.keys%2C%0A%20%20%20%20%20%20nativeCreate%20%3D%20Object.create%3B%0A%0A%20%20//%20Naked%20function%20reference%20for%20surrogate-prototype-swapping.%0A%20%20var%20Ctor%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Create%20a%20safe%20reference%20to%20the%20Underscore%20object%20for%20use%20below.%0A%20%20var%20_%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20instanceof%20_%29%20return%20obj%3B%0A%20%20%20%20if%20%28%21%28this%20instanceof%20_%29%29%20return%20new%20_%28obj%29%3B%0A%20%20%20%20this._wrapped%20%3D%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Export%20the%20Underscore%20object%20for%20%2A%2ANode.js%2A%2A%2C%20with%0A%20%20//%20backwards-compatibility%20for%20their%20old%20module%20API.%20If%20we%27re%20in%0A%20%20//%20the%20browser%2C%20add%20%60_%60%20as%20a%20global%20object.%0A%20%20//%20%28%60nodeType%60%20is%20checked%20to%20ensure%20that%20%60module%60%0A%20%20//%20and%20%60exports%60%20are%20not%20HTML%20elements.%29%0A%20%20if%20%28typeof%20exports%20%21%3D%20%27undefined%27%20%26%26%20%21exports.nodeType%29%20%7B%0A%20%20%20%20if%20%28typeof%20module%20%21%3D%20%27undefined%27%20%26%26%20%21module.nodeType%20%26%26%20module.exports%29%20%7B%0A%20%20%20%20%20%20exports%20%3D%20module.exports%20%3D%20_%3B%0A%20%20%20%20%7D%0A%20%20%20%20exports._%20%3D%20_%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20root._%20%3D%20_%3B%0A%20%20%7D%0A%0A%20%20//%20Current%20version.%0A%20%20_.VERSION%20%3D%20%271.9.1%27%3B%0A%0A%20%20//%20Internal%20function%20that%20returns%20an%20efficient%20%28for%20current%20engines%29%20version%0A%20%20//%20of%20the%20passed-in%20callback%2C%20to%20be%20repeatedly%20applied%20in%20other%20Underscore%0A%20%20//%20functions.%0A%20%20var%20optimizeCb%20%3D%20function%28func%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28context%20%3D%3D%3D%20void%200%29%20return%20func%3B%0A%20%20%20%20switch%20%28argCount%20%3D%3D%20null%20%3F%203%20%3A%20argCount%29%20%7B%0A%20%20%20%20%20%20case%201%3A%20return%20function%28value%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20//%20The%202-argument%20case%20is%20omitted%20because%20we%E2%80%99re%20not%20using%20it.%0A%20%20%20%20%20%20case%203%3A%20return%20function%28value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20case%204%3A%20return%20function%28accumulator%2C%20value%2C%20index%2C%20collection%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.call%28context%2C%20accumulator%2C%20value%2C%20index%2C%20collection%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28context%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20builtinIteratee%3B%0A%0A%20%20//%20An%20internal%20function%20to%20generate%20callbacks%20that%20can%20be%20applied%20to%20each%0A%20%20//%20element%20in%20a%20collection%2C%20returning%20the%20desired%20result%20%E2%80%94%20either%20%60identity%60%2C%0A%20%20//%20an%20arbitrary%20callback%2C%20a%20property%20matcher%2C%20or%20a%20property%20accessor.%0A%20%20var%20cb%20%3D%20function%28value%2C%20context%2C%20argCount%29%20%7B%0A%20%20%20%20if%20%28_.iteratee%20%21%3D%3D%20builtinIteratee%29%20return%20_.iteratee%28value%2C%20context%29%3B%0A%20%20%20%20if%20%28value%20%3D%3D%20null%29%20return%20_.identity%3B%0A%20%20%20%20if%20%28_.isFunction%28value%29%29%20return%20optimizeCb%28value%2C%20context%2C%20argCount%29%3B%0A%20%20%20%20if%20%28_.isObject%28value%29%20%26%26%20%21_.isArray%28value%29%29%20return%20_.matcher%28value%29%3B%0A%20%20%20%20return%20_.property%28value%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20External%20wrapper%20for%20our%20callback%20generator.%20Users%20may%20customize%0A%20%20//%20%60_.iteratee%60%20if%20they%20want%20additional%20predicate/iteratee%20shorthand%20styles.%0A%20%20//%20This%20abstraction%20hides%20the%20internal-only%20argCount%20argument.%0A%20%20_.iteratee%20%3D%20builtinIteratee%20%3D%20function%28value%2C%20context%29%20%7B%0A%20%20%20%20return%20cb%28value%2C%20context%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Some%20functions%20take%20a%20variable%20number%20of%20arguments%2C%20or%20a%20few%20expected%0A%20%20//%20arguments%20at%20the%20beginning%20and%20then%20a%20variable%20number%20of%20values%20to%20operate%0A%20%20//%20on.%20This%20helper%20accumulates%20all%20remaining%20arguments%20past%20the%20function%E2%80%99s%0A%20%20//%20argument%20length%20%28or%20an%20explicit%20%60startIndex%60%29%2C%20into%20an%20array%20that%20becomes%0A%20%20//%20the%20last%20argument.%20Similar%20to%20ES6%E2%80%99s%20%22rest%20parameter%22.%0A%20%20var%20restArguments%20%3D%20function%28func%2C%20startIndex%29%20%7B%0A%20%20%20%20startIndex%20%3D%20startIndex%20%3D%3D%20null%20%3F%20func.length%20-%201%20%3A%20%2BstartIndex%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20Math.max%28arguments.length%20-%20startIndex%2C%200%29%2C%0A%20%20%20%20%20%20%20%20%20%20rest%20%3D%20Array%28length%29%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%200%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20rest%5Bindex%5D%20%3D%20arguments%5Bindex%20%2B%20startIndex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20switch%20%28startIndex%29%20%7B%0A%20%20%20%20%20%20%20%20case%200%3A%20return%20func.call%28this%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%201%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%20%20case%202%3A%20return%20func.call%28this%2C%20arguments%5B0%5D%2C%20arguments%5B1%5D%2C%20rest%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28startIndex%20%2B%201%29%3B%0A%20%20%20%20%20%20for%20%28index%20%3D%200%3B%20index%20%3C%20startIndex%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bindex%5D%20%3D%20arguments%5Bindex%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20args%5BstartIndex%5D%20%3D%20rest%3B%0A%20%20%20%20%20%20return%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20a%20new%20object%20that%20inherits%20from%20another.%0A%20%20var%20baseCreate%20%3D%20function%28prototype%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28prototype%29%29%20return%20%7B%7D%3B%0A%20%20%20%20if%20%28nativeCreate%29%20return%20nativeCreate%28prototype%29%3B%0A%20%20%20%20Ctor.prototype%20%3D%20prototype%3B%0A%20%20%20%20var%20result%20%3D%20new%20Ctor%3B%0A%20%20%20%20Ctor.prototype%20%3D%20null%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20var%20shallowProperty%20%3D%20function%28key%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20var%20has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20return%20obj%20%21%3D%20null%20%26%26%20hasOwnProperty.call%28obj%2C%20path%29%3B%0A%20%20%7D%0A%0A%20%20var%20deepGet%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20length%20%3F%20obj%20%3A%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Helper%20for%20collection%20methods%20to%20determine%20whether%20a%20collection%0A%20%20//%20should%20be%20iterated%20as%20an%20array%20or%20as%20an%20object.%0A%20%20//%20Related%3A%20http%3A//people.mozilla.org/~jorendorff/es6-draft.html%23sec-tolength%0A%20%20//%20Avoids%20a%20very%20nasty%20iOS%208%20JIT%20bug%20on%20ARM-64.%20%232094%0A%20%20var%20MAX_ARRAY_INDEX%20%3D%20Math.pow%282%2C%2053%29%20-%201%3B%0A%20%20var%20getLength%20%3D%20shallowProperty%28%27length%27%29%3B%0A%20%20var%20isArrayLike%20%3D%20function%28collection%29%20%7B%0A%20%20%20%20var%20length%20%3D%20getLength%28collection%29%3B%0A%20%20%20%20return%20typeof%20length%20%3D%3D%20%27number%27%20%26%26%20length%20%3E%3D%200%20%26%26%20length%20%3C%3D%20MAX_ARRAY_INDEX%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Collection%20Functions%0A%20%20//%20--------------------%0A%0A%20%20//%20The%20cornerstone%2C%20an%20%60each%60%20implementation%2C%20aka%20%60forEach%60.%0A%20%20//%20Handles%20raw%20objects%20in%20addition%20to%20array-likes.%20Treats%20all%0A%20%20//%20sparse%20array-likes%20as%20if%20they%20were%20dense.%0A%20%20_.each%20%3D%20_.forEach%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20i%2C%20length%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20%7B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bi%5D%2C%20i%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20%20%20for%20%28i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20iteratee%28obj%5Bkeys%5Bi%5D%5D%2C%20keys%5Bi%5D%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element.%0A%20%20_.map%20%3D%20_.collect%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20results%5Bindex%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20reducing%20function%20iterating%20left%20or%20right.%0A%20%20var%20createReduce%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20//%20Wrap%20code%20that%20reassigns%20argument%20variables%20in%20a%20separate%20function%20than%0A%20%20%20%20//%20the%20one%20that%20accesses%20%60arguments.length%60%20to%20avoid%20a%20perf%20hit.%20%28%231991%29%0A%20%20%20%20var%20reducer%20%3D%20function%28obj%2C%20iteratee%2C%20memo%2C%20initial%29%20%7B%0A%20%20%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%2C%0A%20%20%20%20%20%20%20%20%20%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20if%20%28%21initial%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20obj%5Bkeys%20%3F%20keys%5Bindex%5D%20%3A%20index%5D%3B%0A%20%20%20%20%20%20%20%20index%20%2B%3D%20dir%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20%20%20memo%20%3D%20iteratee%28memo%2C%20obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20memo%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20initial%20%3D%20arguments.length%20%3E%3D%203%3B%0A%20%20%20%20%20%20return%20reducer%28obj%2C%20optimizeCb%28iteratee%2C%20context%2C%204%29%2C%20memo%2C%20initial%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20%2A%2AReduce%2A%2A%20builds%20up%20a%20single%20result%20from%20a%20list%20of%20values%2C%20aka%20%60inject%60%2C%0A%20%20//%20or%20%60foldl%60.%0A%20%20_.reduce%20%3D%20_.foldl%20%3D%20_.inject%20%3D%20createReduce%281%29%3B%0A%0A%20%20//%20The%20right-associative%20version%20of%20reduce%2C%20also%20known%20as%20%60foldr%60.%0A%20%20_.reduceRight%20%3D%20_.foldr%20%3D%20createReduce%28-1%29%3B%0A%0A%20%20//%20Return%20the%20first%20value%20which%20passes%20a%20truth%20test.%20Aliased%20as%20%60detect%60.%0A%20%20_.find%20%3D%20_.detect%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20keyFinder%20%3D%20isArrayLike%28obj%29%20%3F%20_.findIndex%20%3A%20_.findKey%3B%0A%20%20%20%20var%20key%20%3D%20keyFinder%28obj%2C%20predicate%2C%20context%29%3B%0A%20%20%20%20if%20%28key%20%21%3D%3D%20void%200%20%26%26%20key%20%21%3D%3D%20-1%29%20return%20obj%5Bkey%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20that%20pass%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60select%60.%0A%20%20_.filter%20%3D%20_.select%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20if%20%28predicate%28value%2C%20index%2C%20list%29%29%20results.push%28value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20all%20the%20elements%20for%20which%20a%20truth%20test%20fails.%0A%20%20_.reject%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.negate%28cb%28predicate%29%29%2C%20context%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20whether%20all%20of%20the%20elements%20match%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60all%60.%0A%20%20_.every%20%3D%20_.all%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28%21predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20at%20least%20one%20element%20in%20the%20object%20matches%20a%20truth%20test.%0A%20%20//%20Aliased%20as%20%60any%60.%0A%20%20_.some%20%3D%20_.any%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20%21isArrayLike%28obj%29%20%26%26%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20%28keys%20%7C%7C%20obj%29.length%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%20%3F%20keys%5Bindex%5D%20%3A%20index%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%29%20return%20true%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20false%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Determine%20if%20the%20array%20or%20object%20contains%20a%20given%20item%20%28using%20%60%3D%3D%3D%60%29.%0A%20%20//%20Aliased%20as%20%60includes%60%20and%20%60include%60.%0A%20%20_.contains%20%3D%20_.includes%20%3D%20_.include%20%3D%20function%28obj%2C%20item%2C%20fromIndex%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20if%20%28typeof%20fromIndex%20%21%3D%20%27number%27%20%7C%7C%20guard%29%20fromIndex%20%3D%200%3B%0A%20%20%20%20return%20_.indexOf%28obj%2C%20item%2C%20fromIndex%29%20%3E%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invoke%20a%20method%20%28with%20arguments%29%20on%20every%20item%20in%20a%20collection.%0A%20%20_.invoke%20%3D%20restArguments%28function%28obj%2C%20path%2C%20args%29%20%7B%0A%20%20%20%20var%20contextPath%2C%20func%3B%0A%20%20%20%20if%20%28_.isFunction%28path%29%29%20%7B%0A%20%20%20%20%20%20func%20%3D%20path%3B%0A%20%20%20%20%7D%20else%20if%20%28_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20contextPath%20%3D%20path.slice%280%2C%20-1%29%3B%0A%20%20%20%20%20%20path%20%3D%20path%5Bpath.length%20-%201%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.map%28obj%2C%20function%28context%29%20%7B%0A%20%20%20%20%20%20var%20method%20%3D%20func%3B%0A%20%20%20%20%20%20if%20%28%21method%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28contextPath%20%26%26%20contextPath.length%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20context%20%3D%20deepGet%28context%2C%20contextPath%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28context%20%3D%3D%20null%29%20return%20void%200%3B%0A%20%20%20%20%20%20%20%20method%20%3D%20context%5Bpath%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20method%20%3D%3D%20null%20%3F%20method%20%3A%20method.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60map%60%3A%20fetching%20a%20property.%0A%20%20_.pluck%20%3D%20function%28obj%2C%20key%29%20%7B%0A%20%20%20%20return%20_.map%28obj%2C%20_.property%28key%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60filter%60%3A%20selecting%20only%20objects%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.where%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.filter%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convenience%20version%20of%20a%20common%20use%20case%20of%20%60find%60%3A%20getting%20the%20first%20object%0A%20%20//%20containing%20specific%20%60key%3Avalue%60%20pairs.%0A%20%20_.findWhere%20%3D%20function%28obj%2C%20attrs%29%20%7B%0A%20%20%20%20return%20_.find%28obj%2C%20_.matcher%28attrs%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20maximum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.max%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20-Infinity%2C%20lastComputed%20%3D%20-Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3E%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3E%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20-Infinity%20%26%26%20result%20%3D%3D%3D%20-Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20minimum%20element%20%28or%20element-based%20computation%29.%0A%20%20_.min%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20result%20%3D%20Infinity%2C%20lastComputed%20%3D%20Infinity%2C%0A%20%20%20%20%20%20%20%20value%2C%20computed%3B%0A%20%20%20%20if%20%28iteratee%20%3D%3D%20null%20%7C%7C%20typeof%20iteratee%20%3D%3D%20%27number%27%20%26%26%20typeof%20obj%5B0%5D%20%21%3D%20%27object%27%20%26%26%20obj%20%21%3D%20null%29%20%7B%0A%20%20%20%20%20%20obj%20%3D%20isArrayLike%28obj%29%20%3F%20obj%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20obj.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20obj%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28value%20%21%3D%20null%20%26%26%20value%20%3C%20result%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28v%2C%20index%2C%20list%29%20%7B%0A%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%28v%2C%20index%2C%20list%29%3B%0A%20%20%20%20%20%20%20%20if%20%28computed%20%3C%20lastComputed%20%7C%7C%20computed%20%3D%3D%3D%20Infinity%20%26%26%20result%20%3D%3D%3D%20Infinity%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20result%20%3D%20v%3B%0A%20%20%20%20%20%20%20%20%20%20lastComputed%20%3D%20computed%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shuffle%20a%20collection.%0A%20%20_.shuffle%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.sample%28obj%2C%20Infinity%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sample%20%2A%2An%2A%2A%20random%20values%20from%20a%20collection%20using%20the%20modern%20version%20of%20the%0A%20%20//%20%5BFisher-Yates%20shuffle%5D%28http%3A//en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle%29.%0A%20%20//%20If%20%2A%2An%2A%2A%20is%20not%20specified%2C%20returns%20a%20single%20random%20element.%0A%20%20//%20The%20internal%20%60guard%60%20argument%20allows%20it%20to%20work%20with%20%60map%60.%0A%20%20_.sample%20%3D%20function%28obj%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20%7B%0A%20%20%20%20%20%20if%20%28%21isArrayLike%28obj%29%29%20obj%20%3D%20_.values%28obj%29%3B%0A%20%20%20%20%20%20return%20obj%5B_.random%28obj.length%20-%201%29%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20sample%20%3D%20isArrayLike%28obj%29%20%3F%20_.clone%28obj%29%20%3A%20_.values%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20getLength%28sample%29%3B%0A%20%20%20%20n%20%3D%20Math.max%28Math.min%28n%2C%20length%29%2C%200%29%3B%0A%20%20%20%20var%20last%20%3D%20length%20-%201%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20n%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20rand%20%3D%20_.random%28index%2C%20last%29%3B%0A%20%20%20%20%20%20var%20temp%20%3D%20sample%5Bindex%5D%3B%0A%20%20%20%20%20%20sample%5Bindex%5D%20%3D%20sample%5Brand%5D%3B%0A%20%20%20%20%20%20sample%5Brand%5D%20%3D%20temp%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20sample.slice%280%2C%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Sort%20the%20object%27s%20values%20by%20a%20criterion%20produced%20by%20an%20iteratee.%0A%20%20_.sortBy%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20return%20_.pluck%28_.map%28obj%2C%20function%28value%2C%20key%2C%20list%29%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20value%3A%20value%2C%0A%20%20%20%20%20%20%20%20index%3A%20index%2B%2B%2C%0A%20%20%20%20%20%20%20%20criteria%3A%20iteratee%28value%2C%20key%2C%20list%29%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29.sort%28function%28left%2C%20right%29%20%7B%0A%20%20%20%20%20%20var%20a%20%3D%20left.criteria%3B%0A%20%20%20%20%20%20var%20b%20%3D%20right.criteria%3B%0A%20%20%20%20%20%20if%20%28a%20%21%3D%3D%20b%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3E%20b%20%7C%7C%20a%20%3D%3D%3D%20void%200%29%20return%201%3B%0A%20%20%20%20%20%20%20%20if%20%28a%20%3C%20b%20%7C%7C%20b%20%3D%3D%3D%20void%200%29%20return%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20left.index%20-%20right.index%3B%0A%20%20%20%20%7D%29%2C%20%27value%27%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20used%20for%20aggregate%20%22group%20by%22%20operations.%0A%20%20var%20group%20%3D%20function%28behavior%2C%20partition%29%20%7B%0A%20%20%20%20return%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20%20%20var%20result%20%3D%20partition%20%3F%20%5B%5B%5D%2C%20%5B%5D%5D%20%3A%20%7B%7D%3B%0A%20%20%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20%20%20_.each%28obj%2C%20function%28value%2C%20index%29%20%7B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20iteratee%28value%2C%20index%2C%20obj%29%3B%0A%20%20%20%20%20%20%20%20behavior%28result%2C%20value%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Groups%20the%20object%27s%20values%20by%20a%20criterion.%20Pass%20either%20a%20string%20attribute%0A%20%20//%20to%20group%20by%2C%20or%20a%20function%20that%20returns%20the%20criterion.%0A%20%20_.groupBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D.push%28value%29%3B%20else%20result%5Bkey%5D%20%3D%20%5Bvalue%5D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Indexes%20the%20object%27s%20values%20by%20a%20criterion%2C%20similar%20to%20%60groupBy%60%2C%20but%20for%0A%20%20//%20when%20you%20know%20that%20your%20index%20values%20will%20be%20unique.%0A%20%20_.indexBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Counts%20instances%20of%20an%20object%20that%20group%20by%20a%20certain%20criterion.%20Pass%0A%20%20//%20either%20a%20string%20attribute%20to%20count%20by%2C%20or%20a%20function%20that%20returns%20the%0A%20%20//%20criterion.%0A%20%20_.countBy%20%3D%20group%28function%28result%2C%20value%2C%20key%29%20%7B%0A%20%20%20%20if%20%28has%28result%2C%20key%29%29%20result%5Bkey%5D%2B%2B%3B%20else%20result%5Bkey%5D%20%3D%201%3B%0A%20%20%7D%29%3B%0A%0A%20%20var%20reStrSymbol%20%3D%20/%5B%5E%5Cud800-%5Cudfff%5D%7C%5B%5Cud800-%5Cudbff%5D%5B%5Cudc00-%5Cudfff%5D%7C%5B%5Cud800-%5Cudfff%5D/g%3B%0A%20%20//%20Safely%20create%20a%20real%2C%20live%20array%20from%20anything%20iterable.%0A%20%20_.toArray%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21obj%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28_.isArray%28obj%29%29%20return%20slice.call%28obj%29%3B%0A%20%20%20%20if%20%28_.isString%28obj%29%29%20%7B%0A%20%20%20%20%20%20//%20Keep%20surrogate%20pair%20characters%20together%0A%20%20%20%20%20%20return%20obj.match%28reStrSymbol%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28isArrayLike%28obj%29%29%20return%20_.map%28obj%2C%20_.identity%29%3B%0A%20%20%20%20return%20_.values%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20number%20of%20elements%20in%20an%20object.%0A%20%20_.size%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%200%3B%0A%20%20%20%20return%20isArrayLike%28obj%29%20%3F%20obj.length%20%3A%20_.keys%28obj%29.length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Split%20a%20collection%20into%20two%20arrays%3A%20one%20whose%20elements%20all%20satisfy%20the%20given%0A%20%20//%20predicate%2C%20and%20one%20whose%20elements%20all%20do%20not%20satisfy%20the%20predicate.%0A%20%20_.partition%20%3D%20group%28function%28result%2C%20value%2C%20pass%29%20%7B%0A%20%20%20%20result%5Bpass%20%3F%200%20%3A%201%5D.push%28value%29%3B%0A%20%20%7D%2C%20true%29%3B%0A%0A%20%20//%20Array%20Functions%0A%20%20//%20---------------%0A%0A%20%20//%20Get%20the%20first%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20first%20N%0A%20%20//%20values%20in%20the%20array.%20Aliased%20as%20%60head%60%20and%20%60take%60.%20The%20%2A%2Aguard%2A%2A%20check%0A%20%20//%20allows%20it%20to%20work%20with%20%60_.map%60.%0A%20%20_.first%20%3D%20_.head%20%3D%20_.take%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5B0%5D%3B%0A%20%20%20%20return%20_.initial%28array%2C%20array.length%20-%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20last%20entry%20of%20the%20array.%20Especially%20useful%20on%0A%20%20//%20the%20arguments%20object.%20Passing%20%2A%2An%2A%2A%20will%20return%20all%20the%20values%20in%0A%20%20//%20the%20array%2C%20excluding%20the%20last%20N.%0A%20%20_.initial%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%200%2C%20Math.max%280%2C%20array.length%20-%20%28n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Get%20the%20last%20element%20of%20an%20array.%20Passing%20%2A%2An%2A%2A%20will%20return%20the%20last%20N%0A%20%20//%20values%20in%20the%20array.%0A%20%20_.last%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20if%20%28array%20%3D%3D%20null%20%7C%7C%20array.length%20%3C%201%29%20return%20n%20%3D%3D%20null%20%3F%20void%200%20%3A%20%5B%5D%3B%0A%20%20%20%20if%20%28n%20%3D%3D%20null%20%7C%7C%20guard%29%20return%20array%5Barray.length%20-%201%5D%3B%0A%20%20%20%20return%20_.rest%28array%2C%20Math.max%280%2C%20array.length%20-%20n%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20everything%20but%20the%20first%20entry%20of%20the%20array.%20Aliased%20as%20%60tail%60%20and%20%60drop%60.%0A%20%20//%20Especially%20useful%20on%20the%20arguments%20object.%20Passing%20an%20%2A%2An%2A%2A%20will%20return%0A%20%20//%20the%20rest%20N%20values%20in%20the%20array.%0A%20%20_.rest%20%3D%20_.tail%20%3D%20_.drop%20%3D%20function%28array%2C%20n%2C%20guard%29%20%7B%0A%20%20%20%20return%20slice.call%28array%2C%20n%20%3D%3D%20null%20%7C%7C%20guard%20%3F%201%20%3A%20n%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Trim%20out%20all%20falsy%20values%20from%20an%20array.%0A%20%20_.compact%20%3D%20function%28array%29%20%7B%0A%20%20%20%20return%20_.filter%28array%2C%20Boolean%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20implementation%20of%20a%20recursive%20%60flatten%60%20function.%0A%20%20var%20flatten%20%3D%20function%28input%2C%20shallow%2C%20strict%2C%20output%29%20%7B%0A%20%20%20%20output%20%3D%20output%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20idx%20%3D%20output.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28input%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20input%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28isArrayLike%28value%29%20%26%26%20%28_.isArray%28value%29%20%7C%7C%20_.isArguments%28value%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Flatten%20current%20level%20of%20array%20or%20arguments%20object.%0A%20%20%20%20%20%20%20%20if%20%28shallow%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20j%20%3D%200%2C%20len%20%3D%20value.length%3B%0A%20%20%20%20%20%20%20%20%20%20while%20%28j%20%3C%20len%29%20output%5Bidx%2B%2B%5D%20%3D%20value%5Bj%2B%2B%5D%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20flatten%28value%2C%20shallow%2C%20strict%2C%20output%29%3B%0A%20%20%20%20%20%20%20%20%20%20idx%20%3D%20output.length%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21strict%29%20%7B%0A%20%20%20%20%20%20%20%20output%5Bidx%2B%2B%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20output%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Flatten%20out%20an%20array%2C%20either%20recursively%20%28by%20default%29%2C%20or%20just%20one%20level.%0A%20%20_.flatten%20%3D%20function%28array%2C%20shallow%29%20%7B%0A%20%20%20%20return%20flatten%28array%2C%20shallow%2C%20false%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20version%20of%20the%20array%20that%20does%20not%20contain%20the%20specified%20value%28s%29.%0A%20%20_.without%20%3D%20restArguments%28function%28array%2C%20otherArrays%29%20%7B%0A%20%20%20%20return%20_.difference%28array%2C%20otherArrays%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20a%20duplicate-free%20version%20of%20the%20array.%20If%20the%20array%20has%20already%0A%20%20//%20been%20sorted%2C%20you%20have%20the%20option%20of%20using%20a%20faster%20algorithm.%0A%20%20//%20The%20faster%20algorithm%20will%20not%20work%20with%20an%20iteratee%20if%20the%20iteratee%0A%20%20//%20is%20not%20a%20one-to-one%20function%2C%20so%20providing%20an%20iteratee%20will%20disable%0A%20%20//%20the%20faster%20algorithm.%0A%20%20//%20Aliased%20as%20%60unique%60.%0A%20%20_.uniq%20%3D%20_.unique%20%3D%20function%28array%2C%20isSorted%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20if%20%28%21_.isBoolean%28isSorted%29%29%20%7B%0A%20%20%20%20%20%20context%20%3D%20iteratee%3B%0A%20%20%20%20%20%20iteratee%20%3D%20isSorted%3B%0A%20%20%20%20%20%20isSorted%20%3D%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28iteratee%20%21%3D%20null%29%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20seen%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20value%20%3D%20array%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20computed%20%3D%20iteratee%20%3F%20iteratee%28value%2C%20i%2C%20array%29%20%3A%20value%3B%0A%20%20%20%20%20%20if%20%28isSorted%20%26%26%20%21iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21i%20%7C%7C%20seen%20%21%3D%3D%20computed%29%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20seen%20%3D%20computed%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28iteratee%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28seen%2C%20computed%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20seen.push%28computed%29%3B%0A%20%20%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21_.contains%28result%2C%20value%29%29%20%7B%0A%20%20%20%20%20%20%20%20result.push%28value%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20the%20union%3A%20each%20distinct%20element%20from%20all%20of%0A%20%20//%20the%20passed-in%20arrays.%0A%20%20_.union%20%3D%20restArguments%28function%28arrays%29%20%7B%0A%20%20%20%20return%20_.uniq%28flatten%28arrays%2C%20true%2C%20true%29%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Produce%20an%20array%20that%20contains%20every%20item%20shared%20between%20all%20the%0A%20%20//%20passed-in%20arrays.%0A%20%20_.intersection%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20argsLength%20%3D%20arguments.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20item%20%3D%20array%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28_.contains%28result%2C%20item%29%29%20continue%3B%0A%20%20%20%20%20%20var%20j%3B%0A%20%20%20%20%20%20for%20%28j%20%3D%201%3B%20j%20%3C%20argsLength%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21_.contains%28arguments%5Bj%5D%2C%20item%29%29%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28j%20%3D%3D%3D%20argsLength%29%20result.push%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Take%20the%20difference%20between%20one%20array%20and%20a%20number%20of%20other%20arrays.%0A%20%20//%20Only%20the%20elements%20present%20in%20just%20the%20first%20array%20will%20remain.%0A%20%20_.difference%20%3D%20restArguments%28function%28array%2C%20rest%29%20%7B%0A%20%20%20%20rest%20%3D%20flatten%28rest%2C%20true%2C%20true%29%3B%0A%20%20%20%20return%20_.filter%28array%2C%20function%28value%29%7B%0A%20%20%20%20%20%20return%20%21_.contains%28rest%2C%20value%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Complement%20of%20_.zip.%20Unzip%20accepts%20an%20array%20of%20arrays%20and%20groups%0A%20%20//%20each%20array%27s%20elements%20on%20shared%20indices.%0A%20%20_.unzip%20%3D%20function%28array%29%20%7B%0A%20%20%20%20var%20length%20%3D%20array%20%26%26%20_.max%28array%2C%20getLength%29.length%20%7C%7C%200%3B%0A%20%20%20%20var%20result%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bindex%5D%20%3D%20_.pluck%28array%2C%20index%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Zip%20together%20multiple%20lists%20into%20a%20single%20array%20--%20elements%20that%20share%0A%20%20//%20an%20index%20go%20together.%0A%20%20_.zip%20%3D%20restArguments%28_.unzip%29%3B%0A%0A%20%20//%20Converts%20lists%20into%20objects.%20Pass%20either%20a%20single%20array%20of%20%60%5Bkey%2C%20value%5D%60%0A%20%20//%20pairs%2C%20or%20two%20parallel%20arrays%20of%20the%20same%20length%20--%20one%20of%20keys%2C%20and%20one%20of%0A%20%20//%20the%20corresponding%20values.%20Passing%20by%20pairs%20is%20the%20reverse%20of%20_.pairs.%0A%20%20_.object%20%3D%20function%28list%2C%20values%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20getLength%28list%29%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28values%29%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5D%20%3D%20values%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20result%5Blist%5Bi%5D%5B0%5D%5D%20%3D%20list%5Bi%5D%5B1%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20findIndex%20and%20findLastIndex%20functions.%0A%20%20var%20createPredicateIndexFinder%20%3D%20function%28dir%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20%20%20var%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20var%20index%20%3D%20dir%20%3E%200%20%3F%200%20%3A%20length%20-%201%3B%0A%20%20%20%20%20%20for%20%28%3B%20index%20%3E%3D%200%20%26%26%20index%20%3C%20length%3B%20index%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28predicate%28array%5Bindex%5D%2C%20index%2C%20array%29%29%20return%20index%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20index%20on%20an%20array-like%20that%20passes%20a%20predicate%20test.%0A%20%20_.findIndex%20%3D%20createPredicateIndexFinder%281%29%3B%0A%20%20_.findLastIndex%20%3D%20createPredicateIndexFinder%28-1%29%3B%0A%0A%20%20//%20Use%20a%20comparator%20function%20to%20figure%20out%20the%20smallest%20index%20at%20which%0A%20%20//%20an%20object%20should%20be%20inserted%20so%20as%20to%20maintain%20order.%20Uses%20binary%20search.%0A%20%20_.sortedIndex%20%3D%20function%28array%2C%20obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20var%20value%20%3D%20iteratee%28obj%29%3B%0A%20%20%20%20var%20low%20%3D%200%2C%20high%20%3D%20getLength%28array%29%3B%0A%20%20%20%20while%20%28low%20%3C%20high%29%20%7B%0A%20%20%20%20%20%20var%20mid%20%3D%20Math.floor%28%28low%20%2B%20high%29%20/%202%29%3B%0A%20%20%20%20%20%20if%20%28iteratee%28array%5Bmid%5D%29%20%3C%20value%29%20low%20%3D%20mid%20%2B%201%3B%20else%20high%20%3D%20mid%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20low%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generator%20function%20to%20create%20the%20indexOf%20and%20lastIndexOf%20functions.%0A%20%20var%20createIndexFinder%20%3D%20function%28dir%2C%20predicateFind%2C%20sortedIndex%29%20%7B%0A%20%20%20%20return%20function%28array%2C%20item%2C%20idx%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20getLength%28array%29%3B%0A%20%20%20%20%20%20if%20%28typeof%20idx%20%3D%3D%20%27number%27%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28dir%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20i%20%3D%20idx%20%3E%3D%200%20%3F%20idx%20%3A%20Math.max%28idx%20%2B%20length%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20length%20%3D%20idx%20%3E%3D%200%20%3F%20Math.min%28idx%20%2B%201%2C%20length%29%20%3A%20idx%20%2B%20length%20%2B%201%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28sortedIndex%20%26%26%20idx%20%26%26%20length%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20sortedIndex%28array%2C%20item%29%3B%0A%20%20%20%20%20%20%20%20return%20array%5Bidx%5D%20%3D%3D%3D%20item%20%3F%20idx%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28item%20%21%3D%3D%20item%29%20%7B%0A%20%20%20%20%20%20%20%20idx%20%3D%20predicateFind%28slice.call%28array%2C%20i%2C%20length%29%2C%20_.isNaN%29%3B%0A%20%20%20%20%20%20%20%20return%20idx%20%3E%3D%200%20%3F%20idx%20%2B%20i%20%3A%20-1%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20for%20%28idx%20%3D%20dir%20%3E%200%20%3F%20i%20%3A%20length%20-%201%3B%20idx%20%3E%3D%200%20%26%26%20idx%20%3C%20length%3B%20idx%20%2B%3D%20dir%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28array%5Bidx%5D%20%3D%3D%3D%20item%29%20return%20idx%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20-1%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20the%20position%20of%20the%20first%20occurrence%20of%20an%20item%20in%20an%20array%2C%0A%20%20//%20or%20-1%20if%20the%20item%20is%20not%20included%20in%20the%20array.%0A%20%20//%20If%20the%20array%20is%20large%20and%20already%20in%20sort%20order%2C%20pass%20%60true%60%0A%20%20//%20for%20%2A%2AisSorted%2A%2A%20to%20use%20binary%20search.%0A%20%20_.indexOf%20%3D%20createIndexFinder%281%2C%20_.findIndex%2C%20_.sortedIndex%29%3B%0A%20%20_.lastIndexOf%20%3D%20createIndexFinder%28-1%2C%20_.findLastIndex%29%3B%0A%0A%20%20//%20Generate%20an%20integer%20Array%20containing%20an%20arithmetic%20progression.%20A%20port%20of%0A%20%20//%20the%20native%20Python%20%60range%28%29%60%20function.%20See%0A%20%20//%20%5Bthe%20Python%20documentation%5D%28http%3A//docs.python.org/library/functions.html%23range%29.%0A%20%20_.range%20%3D%20function%28start%2C%20stop%2C%20step%29%20%7B%0A%20%20%20%20if%20%28stop%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20stop%20%3D%20start%20%7C%7C%200%3B%0A%20%20%20%20%20%20start%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21step%29%20%7B%0A%20%20%20%20%20%20step%20%3D%20stop%20%3C%20start%20%3F%20-1%20%3A%201%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20length%20%3D%20Math.max%28Math.ceil%28%28stop%20-%20start%29%20/%20step%29%2C%200%29%3B%0A%20%20%20%20var%20range%20%3D%20Array%28length%29%3B%0A%0A%20%20%20%20for%20%28var%20idx%20%3D%200%3B%20idx%20%3C%20length%3B%20idx%2B%2B%2C%20start%20%2B%3D%20step%29%20%7B%0A%20%20%20%20%20%20range%5Bidx%5D%20%3D%20start%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20return%20range%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Chunk%20a%20single%20array%20into%20multiple%20arrays%2C%20each%20containing%20%60count%60%20or%20fewer%0A%20%20//%20items.%0A%20%20_.chunk%20%3D%20function%28array%2C%20count%29%20%7B%0A%20%20%20%20if%20%28count%20%3D%3D%20null%20%7C%7C%20count%20%3C%201%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20result%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20i%20%3D%200%2C%20length%20%3D%20array.length%3B%0A%20%20%20%20while%20%28i%20%3C%20length%29%20%7B%0A%20%20%20%20%20%20result.push%28slice.call%28array%2C%20i%2C%20i%20%2B%3D%20count%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Function%20%28ahem%29%20Functions%0A%20%20//%20------------------%0A%0A%20%20//%20Determines%20whether%20to%20execute%20a%20function%20as%20a%20constructor%0A%20%20//%20or%20a%20normal%20function%20with%20the%20provided%20arguments.%0A%20%20var%20executeBound%20%3D%20function%28sourceFunc%2C%20boundFunc%2C%20context%2C%20callingContext%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21%28callingContext%20instanceof%20boundFunc%29%29%20return%20sourceFunc.apply%28context%2C%20args%29%3B%0A%20%20%20%20var%20self%20%3D%20baseCreate%28sourceFunc.prototype%29%3B%0A%20%20%20%20var%20result%20%3D%20sourceFunc.apply%28self%2C%20args%29%3B%0A%20%20%20%20if%20%28_.isObject%28result%29%29%20return%20result%3B%0A%20%20%20%20return%20self%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20function%20bound%20to%20a%20given%20object%20%28assigning%20%60this%60%2C%20and%20arguments%2C%0A%20%20//%20optionally%29.%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Function.bind%60%20if%0A%20%20//%20available.%0A%20%20_.bind%20%3D%20restArguments%28function%28func%2C%20context%2C%20args%29%20%7B%0A%20%20%20%20if%20%28%21_.isFunction%28func%29%29%20throw%20new%20TypeError%28%27Bind%20must%20be%20called%20on%20a%20function%27%29%3B%0A%20%20%20%20var%20bound%20%3D%20restArguments%28function%28callArgs%29%20%7B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20context%2C%20this%2C%20args.concat%28callArgs%29%29%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Partially%20apply%20a%20function%20by%20creating%20a%20version%20that%20has%20had%20some%20of%20its%0A%20%20//%20arguments%20pre-filled%2C%20without%20changing%20its%20dynamic%20%60this%60%20context.%20_%20acts%0A%20%20//%20as%20a%20placeholder%20by%20default%2C%20allowing%20any%20combination%20of%20arguments%20to%20be%0A%20%20//%20pre-filled.%20Set%20%60_.partial.placeholder%60%20for%20a%20custom%20placeholder%20argument.%0A%20%20_.partial%20%3D%20restArguments%28function%28func%2C%20boundArgs%29%20%7B%0A%20%20%20%20var%20placeholder%20%3D%20_.partial.placeholder%3B%0A%20%20%20%20var%20bound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20position%20%3D%200%2C%20length%20%3D%20boundArgs.length%3B%0A%20%20%20%20%20%20var%20args%20%3D%20Array%28length%29%3B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20args%5Bi%5D%20%3D%20boundArgs%5Bi%5D%20%3D%3D%3D%20placeholder%20%3F%20arguments%5Bposition%2B%2B%5D%20%3A%20boundArgs%5Bi%5D%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20while%20%28position%20%3C%20arguments.length%29%20args.push%28arguments%5Bposition%2B%2B%5D%29%3B%0A%20%20%20%20%20%20return%20executeBound%28func%2C%20bound%2C%20this%2C%20this%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20return%20bound%3B%0A%20%20%7D%29%3B%0A%0A%20%20_.partial.placeholder%20%3D%20_%3B%0A%0A%20%20//%20Bind%20a%20number%20of%20an%20object%27s%20methods%20to%20that%20object.%20Remaining%20arguments%0A%20%20//%20are%20the%20method%20names%20to%20be%20bound.%20Useful%20for%20ensuring%20that%20all%20callbacks%0A%20%20//%20defined%20on%20an%20object%20belong%20to%20it.%0A%20%20_.bindAll%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20var%20index%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28index%20%3C%201%29%20throw%20new%20Error%28%27bindAll%20must%20be%20passed%20function%20names%27%29%3B%0A%20%20%20%20while%20%28index--%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20obj%5Bkey%5D%20%3D%20_.bind%28obj%5Bkey%5D%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%3B%0A%0A%20%20//%20Memoize%20an%20expensive%20function%20by%20storing%20its%20results.%0A%20%20_.memoize%20%3D%20function%28func%2C%20hasher%29%20%7B%0A%20%20%20%20var%20memoize%20%3D%20function%28key%29%20%7B%0A%20%20%20%20%20%20var%20cache%20%3D%20memoize.cache%3B%0A%20%20%20%20%20%20var%20address%20%3D%20%27%27%20%2B%20%28hasher%20%3F%20hasher.apply%28this%2C%20arguments%29%20%3A%20key%29%3B%0A%20%20%20%20%20%20if%20%28%21has%28cache%2C%20address%29%29%20cache%5Baddress%5D%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20return%20cache%5Baddress%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20memoize.cache%20%3D%20%7B%7D%3B%0A%20%20%20%20return%20memoize%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Delays%20a%20function%20for%20the%20given%20number%20of%20milliseconds%2C%20and%20then%20calls%0A%20%20//%20it%20with%20the%20arguments%20supplied.%0A%20%20_.delay%20%3D%20restArguments%28function%28func%2C%20wait%2C%20args%29%20%7B%0A%20%20%20%20return%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20return%20func.apply%28null%2C%20args%29%3B%0A%20%20%20%20%7D%2C%20wait%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Defers%20a%20function%2C%20scheduling%20it%20to%20run%20after%20the%20current%20call%20stack%20has%0A%20%20//%20cleared.%0A%20%20_.defer%20%3D%20_.partial%28_.delay%2C%20_%2C%201%29%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20when%20invoked%2C%20will%20only%20be%20triggered%20at%20most%20once%0A%20%20//%20during%20a%20given%20window%20of%20time.%20Normally%2C%20the%20throttled%20function%20will%20run%0A%20%20//%20as%20much%20as%20it%20can%2C%20without%20ever%20going%20more%20than%20once%20per%20%60wait%60%20duration%3B%0A%20%20//%20but%20if%20you%27d%20like%20to%20disable%20the%20execution%20on%20the%20leading%20edge%2C%20pass%0A%20%20//%20%60%7Bleading%3A%20false%7D%60.%20To%20disable%20execution%20on%20the%20trailing%20edge%2C%20ditto.%0A%20%20_.throttle%20%3D%20function%28func%2C%20wait%2C%20options%29%20%7B%0A%20%20%20%20var%20timeout%2C%20context%2C%20args%2C%20result%3B%0A%20%20%20%20var%20previous%20%3D%200%3B%0A%20%20%20%20if%20%28%21options%29%20options%20%3D%20%7B%7D%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20previous%20%3D%20options.leading%20%3D%3D%3D%20false%20%3F%200%20%3A%20_.now%28%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20throttled%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20now%20%3D%20_.now%28%29%3B%0A%20%20%20%20%20%20if%20%28%21previous%20%26%26%20options.leading%20%3D%3D%3D%20false%29%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20var%20remaining%20%3D%20wait%20-%20%28now%20-%20previous%29%3B%0A%20%20%20%20%20%20context%20%3D%20this%3B%0A%20%20%20%20%20%20args%20%3D%20arguments%3B%0A%20%20%20%20%20%20if%20%28remaining%20%3C%3D%200%20%7C%7C%20remaining%20%3E%20wait%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28timeout%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20previous%20%3D%20now%3B%0A%20%20%20%20%20%20%20%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%20%20%20%20if%20%28%21timeout%29%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28%21timeout%20%26%26%20options.trailing%20%21%3D%3D%20false%29%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20remaining%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20throttled.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20previous%20%3D%200%3B%0A%20%20%20%20%20%20timeout%20%3D%20context%20%3D%20args%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20throttled%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%2C%20that%2C%20as%20long%20as%20it%20continues%20to%20be%20invoked%2C%20will%20not%0A%20%20//%20be%20triggered.%20The%20function%20will%20be%20called%20after%20it%20stops%20being%20called%20for%0A%20%20//%20N%20milliseconds.%20If%20%60immediate%60%20is%20passed%2C%20trigger%20the%20function%20on%20the%0A%20%20//%20leading%20edge%2C%20instead%20of%20the%20trailing.%0A%20%20_.debounce%20%3D%20function%28func%2C%20wait%2C%20immediate%29%20%7B%0A%20%20%20%20var%20timeout%2C%20result%3B%0A%0A%20%20%20%20var%20later%20%3D%20function%28context%2C%20args%29%20%7B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%20%20if%20%28args%29%20result%20%3D%20func.apply%28context%2C%20args%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20var%20debounced%20%3D%20restArguments%28function%28args%29%20%7B%0A%20%20%20%20%20%20if%20%28timeout%29%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20if%20%28immediate%29%20%7B%0A%20%20%20%20%20%20%20%20var%20callNow%20%3D%20%21timeout%3B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20setTimeout%28later%2C%20wait%29%3B%0A%20%20%20%20%20%20%20%20if%20%28callNow%29%20result%20%3D%20func.apply%28this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20timeout%20%3D%20_.delay%28later%2C%20wait%2C%20this%2C%20args%29%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20debounced.cancel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20clearTimeout%28timeout%29%3B%0A%20%20%20%20%20%20timeout%20%3D%20null%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20return%20debounced%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20first%20function%20passed%20as%20an%20argument%20to%20the%20second%2C%0A%20%20//%20allowing%20you%20to%20adjust%20arguments%2C%20run%20code%20before%20and%20after%2C%20and%0A%20%20//%20conditionally%20execute%20the%20original%20function.%0A%20%20_.wrap%20%3D%20function%28func%2C%20wrapper%29%20%7B%0A%20%20%20%20return%20_.partial%28wrapper%2C%20func%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20negated%20version%20of%20the%20passed-in%20predicate.%0A%20%20_.negate%20%3D%20function%28predicate%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20%21predicate.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20is%20the%20composition%20of%20a%20list%20of%20functions%2C%20each%0A%20%20//%20consuming%20the%20return%20value%20of%20the%20function%20that%20follows.%0A%20%20_.compose%20%3D%20function%28%29%20%7B%0A%20%20%20%20var%20args%20%3D%20arguments%3B%0A%20%20%20%20var%20start%20%3D%20args.length%20-%201%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20i%20%3D%20start%3B%0A%20%20%20%20%20%20var%20result%20%3D%20args%5Bstart%5D.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20while%20%28i--%29%20result%20%3D%20args%5Bi%5D.call%28this%2C%20result%29%3B%0A%20%20%20%20%20%20return%20result%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20on%20and%20after%20the%20Nth%20call.%0A%20%20_.after%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3C%201%29%20%7B%0A%20%20%20%20%20%20%20%20return%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20only%20be%20executed%20up%20to%20%28but%20not%20including%29%20the%20Nth%20call.%0A%20%20_.before%20%3D%20function%28times%2C%20func%29%20%7B%0A%20%20%20%20var%20memo%3B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28--times%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20memo%20%3D%20func.apply%28this%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20%28times%20%3C%3D%201%29%20func%20%3D%20null%3B%0A%20%20%20%20%20%20return%20memo%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20function%20that%20will%20be%20executed%20at%20most%20one%20time%2C%20no%20matter%20how%0A%20%20//%20often%20you%20call%20it.%20Useful%20for%20lazy%20initialization.%0A%20%20_.once%20%3D%20_.partial%28_.before%2C%202%29%3B%0A%0A%20%20_.restArguments%20%3D%20restArguments%3B%0A%0A%20%20//%20Object%20Functions%0A%20%20//%20----------------%0A%0A%20%20//%20Keys%20in%20IE%20%3C%209%20that%20won%27t%20be%20iterated%20by%20%60for%20key%20in%20...%60%20and%20thus%20missed.%0A%20%20var%20hasEnumBug%20%3D%20%21%7BtoString%3A%20null%7D.propertyIsEnumerable%28%27toString%27%29%3B%0A%20%20var%20nonEnumerableProps%20%3D%20%5B%27valueOf%27%2C%20%27isPrototypeOf%27%2C%20%27toString%27%2C%0A%20%20%20%20%27propertyIsEnumerable%27%2C%20%27hasOwnProperty%27%2C%20%27toLocaleString%27%5D%3B%0A%0A%20%20var%20collectNonEnumProps%20%3D%20function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20nonEnumIdx%20%3D%20nonEnumerableProps.length%3B%0A%20%20%20%20var%20constructor%20%3D%20obj.constructor%3B%0A%20%20%20%20var%20proto%20%3D%20_.isFunction%28constructor%29%20%26%26%20constructor.prototype%20%7C%7C%20ObjProto%3B%0A%0A%20%20%20%20//%20Constructor%20is%20a%20special%20case.%0A%20%20%20%20var%20prop%20%3D%20%27constructor%27%3B%0A%20%20%20%20if%20%28has%28obj%2C%20prop%29%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20keys.push%28prop%29%3B%0A%0A%20%20%20%20while%20%28nonEnumIdx--%29%20%7B%0A%20%20%20%20%20%20prop%20%3D%20nonEnumerableProps%5BnonEnumIdx%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20in%20obj%20%26%26%20obj%5Bprop%5D%20%21%3D%3D%20proto%5Bprop%5D%20%26%26%20%21_.contains%28keys%2C%20prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20keys.push%28prop%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20names%20of%20an%20object%27s%20own%20properties.%0A%20%20//%20Delegates%20to%20%2A%2AECMAScript%205%2A%2A%27s%20native%20%60Object.keys%60.%0A%20%20_.keys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28nativeKeys%29%20return%20nativeKeys%28obj%29%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20if%20%28has%28obj%2C%20key%29%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20all%20the%20property%20names%20of%20an%20object.%0A%20%20_.allKeys%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20%5B%5D%3B%0A%20%20%20%20var%20keys%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20keys.push%28key%29%3B%0A%20%20%20%20//%20Ahem%2C%20IE%20%3C%209.%0A%20%20%20%20if%20%28hasEnumBug%29%20collectNonEnumProps%28obj%2C%20keys%29%3B%0A%20%20%20%20return%20keys%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Retrieve%20the%20values%20of%20an%20object%27s%20properties.%0A%20%20_.values%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20values%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20values%5Bi%5D%20%3D%20obj%5Bkeys%5Bi%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20values%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20the%20results%20of%20applying%20the%20iteratee%20to%20each%20element%20of%20the%20object.%0A%20%20//%20In%20contrast%20to%20_.map%20it%20returns%20an%20object.%0A%20%20_.mapObject%20%3D%20function%28obj%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20iteratee%20%3D%20cb%28iteratee%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%0A%20%20%20%20%20%20%20%20length%20%3D%20keys.length%2C%0A%20%20%20%20%20%20%20%20results%20%3D%20%7B%7D%3B%0A%20%20%20%20for%20%28var%20index%20%3D%200%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20currentKey%20%3D%20keys%5Bindex%5D%3B%0A%20%20%20%20%20%20results%5BcurrentKey%5D%20%3D%20iteratee%28obj%5BcurrentKey%5D%2C%20currentKey%2C%20obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Convert%20an%20object%20into%20a%20list%20of%20%60%5Bkey%2C%20value%5D%60%20pairs.%0A%20%20//%20The%20opposite%20of%20_.object.%0A%20%20_.pairs%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20var%20length%20%3D%20keys.length%3B%0A%20%20%20%20var%20pairs%20%3D%20Array%28length%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20pairs%5Bi%5D%20%3D%20%5Bkeys%5Bi%5D%2C%20obj%5Bkeys%5Bi%5D%5D%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20pairs%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invert%20the%20keys%20and%20values%20of%20an%20object.%20The%20values%20must%20be%20serializable.%0A%20%20_.invert%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20result%5Bobj%5Bkeys%5Bi%5D%5D%5D%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20sorted%20list%20of%20the%20function%20names%20available%20on%20the%20object.%0A%20%20//%20Aliased%20as%20%60methods%60.%0A%20%20_.functions%20%3D%20_.methods%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20key%20in%20obj%29%20%7B%0A%20%20%20%20%20%20if%20%28_.isFunction%28obj%5Bkey%5D%29%29%20names.push%28key%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20names.sort%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20An%20internal%20function%20for%20creating%20assigner%20functions.%0A%20%20var%20createAssigner%20%3D%20function%28keysFunc%2C%20defaults%29%20%7B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20var%20length%20%3D%20arguments.length%3B%0A%20%20%20%20%20%20if%20%28defaults%29%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%20%20if%20%28length%20%3C%202%20%7C%7C%20obj%20%3D%3D%20null%29%20return%20obj%3B%0A%20%20%20%20%20%20for%20%28var%20index%20%3D%201%3B%20index%20%3C%20length%3B%20index%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bindex%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20keys%20%3D%20keysFunc%28source%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20l%20%3D%20keys.length%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21defaults%20%7C%7C%20obj%5Bkey%5D%20%3D%3D%3D%20void%200%29%20obj%5Bkey%5D%20%3D%20source%5Bkey%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20obj%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Extend%20a%20given%20object%20with%20all%20the%20properties%20in%20passed-in%20object%28s%29.%0A%20%20_.extend%20%3D%20createAssigner%28_.allKeys%29%3B%0A%0A%20%20//%20Assigns%20a%20given%20object%20with%20all%20the%20own%20properties%20in%20the%20passed-in%20object%28s%29.%0A%20%20//%20%28https%3A//developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign%29%0A%20%20_.extendOwn%20%3D%20_.assign%20%3D%20createAssigner%28_.keys%29%3B%0A%0A%20%20//%20Returns%20the%20first%20key%20on%20an%20object%20that%20passes%20a%20predicate%20test.%0A%20%20_.findKey%20%3D%20function%28obj%2C%20predicate%2C%20context%29%20%7B%0A%20%20%20%20predicate%20%3D%20cb%28predicate%2C%20context%29%3B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28obj%29%2C%20key%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28predicate%28obj%5Bkey%5D%2C%20key%2C%20obj%29%29%20return%20key%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20pick%20helper%20function%20to%20determine%20if%20%60obj%60%20has%20key%20%60key%60.%0A%20%20var%20keyInObj%20%3D%20function%28value%2C%20key%2C%20obj%29%20%7B%0A%20%20%20%20return%20key%20in%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20only%20containing%20the%20whitelisted%20properties.%0A%20%20_.pick%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%7D%2C%20iteratee%20%3D%20keys%5B0%5D%3B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20result%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20keys%5B1%5D%29%3B%0A%20%20%20%20%20%20keys%20%3D%20_.allKeys%28obj%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20keyInObj%3B%0A%20%20%20%20%20%20keys%20%3D%20flatten%28keys%2C%20false%2C%20false%29%3B%0A%20%20%20%20%20%20obj%20%3D%20Object%28obj%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20length%20%3D%20keys.length%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20var%20value%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%20%20if%20%28iteratee%28value%2C%20key%2C%20obj%29%29%20result%5Bkey%5D%20%3D%20value%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20result%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Return%20a%20copy%20of%20the%20object%20without%20the%20blacklisted%20properties.%0A%20%20_.omit%20%3D%20restArguments%28function%28obj%2C%20keys%29%20%7B%0A%20%20%20%20var%20iteratee%20%3D%20keys%5B0%5D%2C%20context%3B%0A%20%20%20%20if%20%28_.isFunction%28iteratee%29%29%20%7B%0A%20%20%20%20%20%20iteratee%20%3D%20_.negate%28iteratee%29%3B%0A%20%20%20%20%20%20if%20%28keys.length%20%3E%201%29%20context%20%3D%20keys%5B1%5D%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20keys%20%3D%20_.map%28flatten%28keys%2C%20false%2C%20false%29%2C%20String%29%3B%0A%20%20%20%20%20%20iteratee%20%3D%20function%28value%2C%20key%29%20%7B%0A%20%20%20%20%20%20%20%20return%20%21_.contains%28keys%2C%20key%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20_.pick%28obj%2C%20iteratee%2C%20context%29%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Fill%20in%20a%20given%20object%20with%20default%20properties.%0A%20%20_.defaults%20%3D%20createAssigner%28_.allKeys%2C%20true%29%3B%0A%0A%20%20//%20Creates%20an%20object%20that%20inherits%20from%20the%20given%20prototype%20object.%0A%20%20//%20If%20additional%20properties%20are%20provided%20then%20they%20will%20be%20added%20to%20the%0A%20%20//%20created%20object.%0A%20%20_.create%20%3D%20function%28prototype%2C%20props%29%20%7B%0A%20%20%20%20var%20result%20%3D%20baseCreate%28prototype%29%3B%0A%20%20%20%20if%20%28props%29%20_.extendOwn%28result%2C%20props%29%3B%0A%20%20%20%20return%20result%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Create%20a%20%28shallow-cloned%29%20duplicate%20of%20an%20object.%0A%20%20_.clone%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28%21_.isObject%28obj%29%29%20return%20obj%3B%0A%20%20%20%20return%20_.isArray%28obj%29%20%3F%20obj.slice%28%29%20%3A%20_.extend%28%7B%7D%2C%20obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Invokes%20interceptor%20with%20the%20obj%2C%20and%20then%20returns%20obj.%0A%20%20//%20The%20primary%20purpose%20of%20this%20method%20is%20to%20%22tap%20into%22%20a%20method%20chain%2C%20in%0A%20%20//%20order%20to%20perform%20operations%20on%20intermediate%20results%20within%20the%20chain.%0A%20%20_.tap%20%3D%20function%28obj%2C%20interceptor%29%20%7B%0A%20%20%20%20interceptor%28obj%29%3B%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20whether%20an%20object%20has%20a%20given%20set%20of%20%60key%3Avalue%60%20pairs.%0A%20%20_.isMatch%20%3D%20function%28object%2C%20attrs%29%20%7B%0A%20%20%20%20var%20keys%20%3D%20_.keys%28attrs%29%2C%20length%20%3D%20keys.length%3B%0A%20%20%20%20if%20%28object%20%3D%3D%20null%29%20return%20%21length%3B%0A%20%20%20%20var%20obj%20%3D%20Object%28object%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20keys%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28attrs%5Bkey%5D%20%21%3D%3D%20obj%5Bkey%5D%20%7C%7C%20%21%28key%20in%20obj%29%29%20return%20false%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20var%20eq%2C%20deepEq%3B%0A%20%20eq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Identical%20objects%20are%20equal.%20%600%20%3D%3D%3D%20-0%60%2C%20but%20they%20aren%27t%20identical.%0A%20%20%20%20//%20See%20the%20%5BHarmony%20%60egal%60%20proposal%5D%28http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dharmony%3Aegal%29.%0A%20%20%20%20if%20%28a%20%3D%3D%3D%20b%29%20return%20a%20%21%3D%3D%200%20%7C%7C%201%20/%20a%20%3D%3D%3D%201%20/%20b%3B%0A%20%20%20%20//%20%60null%60%20or%20%60undefined%60%20only%20equal%20to%20itself%20%28strict%20comparison%29.%0A%20%20%20%20if%20%28a%20%3D%3D%20null%20%7C%7C%20b%20%3D%3D%20null%29%20return%20false%3B%0A%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20if%20%28a%20%21%3D%3D%20a%29%20return%20b%20%21%3D%3D%20b%3B%0A%20%20%20%20//%20Exhaust%20primitive%20checks%0A%20%20%20%20var%20type%20%3D%20typeof%20a%3B%0A%20%20%20%20if%20%28type%20%21%3D%3D%20%27function%27%20%26%26%20type%20%21%3D%3D%20%27object%27%20%26%26%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%20%20%20%20return%20deepEq%28a%2C%20b%2C%20aStack%2C%20bStack%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Internal%20recursive%20comparison%20function%20for%20%60isEqual%60.%0A%20%20deepEq%20%3D%20function%28a%2C%20b%2C%20aStack%2C%20bStack%29%20%7B%0A%20%20%20%20//%20Unwrap%20any%20wrapped%20objects.%0A%20%20%20%20if%20%28a%20instanceof%20_%29%20a%20%3D%20a._wrapped%3B%0A%20%20%20%20if%20%28b%20instanceof%20_%29%20b%20%3D%20b._wrapped%3B%0A%20%20%20%20//%20Compare%20%60%5B%5BClass%5D%5D%60%20names.%0A%20%20%20%20var%20className%20%3D%20toString.call%28a%29%3B%0A%20%20%20%20if%20%28className%20%21%3D%3D%20toString.call%28b%29%29%20return%20false%3B%0A%20%20%20%20switch%20%28className%29%20%7B%0A%20%20%20%20%20%20//%20Strings%2C%20numbers%2C%20regular%20expressions%2C%20dates%2C%20and%20booleans%20are%20compared%20by%20value.%0A%20%20%20%20%20%20case%20%27%5Bobject%20RegExp%5D%27%3A%0A%20%20%20%20%20%20//%20RegExps%20are%20coerced%20to%20strings%20for%20comparison%20%28Note%3A%20%27%27%20%2B%20/a/i%20%3D%3D%3D%20%27/a/i%27%29%0A%20%20%20%20%20%20case%20%27%5Bobject%20String%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Primitives%20and%20their%20corresponding%20object%20wrappers%20are%20equivalent%3B%20thus%2C%20%60%225%22%60%20is%0A%20%20%20%20%20%20%20%20//%20equivalent%20to%20%60new%20String%28%225%22%29%60.%0A%20%20%20%20%20%20%20%20return%20%27%27%20%2B%20a%20%3D%3D%3D%20%27%27%20%2B%20b%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Number%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20%60NaN%60s%20are%20equivalent%2C%20but%20non-reflexive.%0A%20%20%20%20%20%20%20%20//%20Object%28NaN%29%20is%20equivalent%20to%20NaN.%0A%20%20%20%20%20%20%20%20if%20%28%2Ba%20%21%3D%3D%20%2Ba%29%20return%20%2Bb%20%21%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20%20%20//%20An%20%60egal%60%20comparison%20is%20performed%20for%20other%20numeric%20values.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%200%20%3F%201%20/%20%2Ba%20%3D%3D%3D%201%20/%20b%20%3A%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Date%5D%27%3A%0A%20%20%20%20%20%20case%20%27%5Bobject%20Boolean%5D%27%3A%0A%20%20%20%20%20%20%20%20//%20Coerce%20dates%20and%20booleans%20to%20numeric%20primitive%20values.%20Dates%20are%20compared%20by%20their%0A%20%20%20%20%20%20%20%20//%20millisecond%20representations.%20Note%20that%20invalid%20dates%20with%20millisecond%20representations%0A%20%20%20%20%20%20%20%20//%20of%20%60NaN%60%20are%20not%20equivalent.%0A%20%20%20%20%20%20%20%20return%20%2Ba%20%3D%3D%3D%20%2Bb%3B%0A%20%20%20%20%20%20case%20%27%5Bobject%20Symbol%5D%27%3A%0A%20%20%20%20%20%20%20%20return%20SymbolProto.valueOf.call%28a%29%20%3D%3D%3D%20SymbolProto.valueOf.call%28b%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20areArrays%20%3D%20className%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%20%20if%20%28%21areArrays%29%20%7B%0A%20%20%20%20%20%20if%20%28typeof%20a%20%21%3D%20%27object%27%20%7C%7C%20typeof%20b%20%21%3D%20%27object%27%29%20return%20false%3B%0A%0A%20%20%20%20%20%20//%20Objects%20with%20different%20constructors%20are%20not%20equivalent%2C%20but%20%60Object%60s%20or%20%60Array%60s%0A%20%20%20%20%20%20//%20from%20different%20frames%20are.%0A%20%20%20%20%20%20var%20aCtor%20%3D%20a.constructor%2C%20bCtor%20%3D%20b.constructor%3B%0A%20%20%20%20%20%20if%20%28aCtor%20%21%3D%3D%20bCtor%20%26%26%20%21%28_.isFunction%28aCtor%29%20%26%26%20aCtor%20instanceof%20aCtor%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_.isFunction%28bCtor%29%20%26%26%20bCtor%20instanceof%20bCtor%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20%28%27constructor%27%20in%20a%20%26%26%20%27constructor%27%20in%20b%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Assume%20equality%20for%20cyclic%20structures.%20The%20algorithm%20for%20detecting%20cyclic%0A%20%20%20%20//%20structures%20is%20adapted%20from%20ES%205.1%20section%2015.12.3%2C%20abstract%20operation%20%60JO%60.%0A%0A%20%20%20%20//%20Initializing%20stack%20of%20traversed%20objects.%0A%20%20%20%20//%20It%27s%20done%20here%20since%20we%20only%20need%20them%20for%20objects%20and%20arrays%20comparison.%0A%20%20%20%20aStack%20%3D%20aStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20bStack%20%3D%20bStack%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20var%20length%20%3D%20aStack.length%3B%0A%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20//%20Linear%20search.%20Performance%20is%20inversely%20proportional%20to%20the%20number%20of%0A%20%20%20%20%20%20//%20unique%20nested%20structures.%0A%20%20%20%20%20%20if%20%28aStack%5Blength%5D%20%3D%3D%3D%20a%29%20return%20bStack%5Blength%5D%20%3D%3D%3D%20b%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20Add%20the%20first%20object%20to%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.push%28a%29%3B%0A%20%20%20%20bStack.push%28b%29%3B%0A%0A%20%20%20%20//%20Recursively%20compare%20objects%20and%20arrays.%0A%20%20%20%20if%20%28areArrays%29%20%7B%0A%20%20%20%20%20%20//%20Compare%20array%20lengths%20to%20determine%20if%20a%20deep%20comparison%20is%20necessary.%0A%20%20%20%20%20%20length%20%3D%20a.length%3B%0A%20%20%20%20%20%20if%20%28length%20%21%3D%3D%20b.length%29%20return%20false%3B%0A%20%20%20%20%20%20//%20Deep%20compare%20the%20contents%2C%20ignoring%20non-numeric%20properties.%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21eq%28a%5Blength%5D%2C%20b%5Blength%5D%2C%20aStack%2C%20bStack%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20Deep%20compare%20objects.%0A%20%20%20%20%20%20var%20keys%20%3D%20_.keys%28a%29%2C%20key%3B%0A%20%20%20%20%20%20length%20%3D%20keys.length%3B%0A%20%20%20%20%20%20//%20Ensure%20that%20both%20objects%20contain%20the%20same%20number%20of%20properties%20before%20comparing%20deep%20equality.%0A%20%20%20%20%20%20if%20%28_.keys%28b%29.length%20%21%3D%3D%20length%29%20return%20false%3B%0A%20%20%20%20%20%20while%20%28length--%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Deep%20compare%20each%20member%0A%20%20%20%20%20%20%20%20key%20%3D%20keys%5Blength%5D%3B%0A%20%20%20%20%20%20%20%20if%20%28%21%28has%28b%2C%20key%29%20%26%26%20eq%28a%5Bkey%5D%2C%20b%5Bkey%5D%2C%20aStack%2C%20bStack%29%29%29%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20//%20Remove%20the%20first%20object%20from%20the%20stack%20of%20traversed%20objects.%0A%20%20%20%20aStack.pop%28%29%3B%0A%20%20%20%20bStack.pop%28%29%3B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Perform%20a%20deep%20comparison%20to%20check%20if%20two%20objects%20are%20equal.%0A%20%20_.isEqual%20%3D%20function%28a%2C%20b%29%20%7B%0A%20%20%20%20return%20eq%28a%2C%20b%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20array%2C%20string%2C%20or%20object%20empty%3F%0A%20%20//%20An%20%22empty%22%20object%20has%20no%20enumerable%20own-properties.%0A%20%20_.isEmpty%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20return%20true%3B%0A%20%20%20%20if%20%28isArrayLike%28obj%29%20%26%26%20%28_.isArray%28obj%29%20%7C%7C%20_.isString%28obj%29%20%7C%7C%20_.isArguments%28obj%29%29%29%20return%20obj.length%20%3D%3D%3D%200%3B%0A%20%20%20%20return%20_.keys%28obj%29.length%20%3D%3D%3D%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20DOM%20element%3F%0A%20%20_.isElement%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21%21%28obj%20%26%26%20obj.nodeType%20%3D%3D%3D%201%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20an%20array%3F%0A%20%20//%20Delegates%20to%20ECMA5%27s%20native%20Array.isArray%0A%20%20_.isArray%20%3D%20nativeIsArray%20%7C%7C%20function%28obj%29%20%7B%0A%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Array%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20an%20object%3F%0A%20%20_.isObject%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20type%20%3D%20typeof%20obj%3B%0A%20%20%20%20return%20type%20%3D%3D%3D%20%27function%27%20%7C%7C%20type%20%3D%3D%3D%20%27object%27%20%26%26%20%21%21obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20some%20isType%20methods%3A%20isArguments%2C%20isFunction%2C%20isString%2C%20isNumber%2C%20isDate%2C%20isRegExp%2C%20isError%2C%20isMap%2C%20isWeakMap%2C%20isSet%2C%20isWeakSet.%0A%20%20_.each%28%5B%27Arguments%27%2C%20%27Function%27%2C%20%27String%27%2C%20%27Number%27%2C%20%27Date%27%2C%20%27RegExp%27%2C%20%27Error%27%2C%20%27Symbol%27%2C%20%27Map%27%2C%20%27WeakMap%27%2C%20%27Set%27%2C%20%27WeakSet%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20_%5B%27is%27%20%2B%20name%5D%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20%27%20%2B%20name%20%2B%20%27%5D%27%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Define%20a%20fallback%20version%20of%20the%20method%20in%20browsers%20%28ahem%2C%20IE%20%3C%209%29%2C%20where%0A%20%20//%20there%20isn%27t%20any%20inspectable%20%22Arguments%22%20type.%0A%20%20if%20%28%21_.isArguments%28arguments%29%29%20%7B%0A%20%20%20%20_.isArguments%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20%27callee%27%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Optimize%20%60isFunction%60%20if%20appropriate.%20Work%20around%20some%20typeof%20bugs%20in%20old%20v8%2C%0A%20%20//%20IE%2011%20%28%231621%29%2C%20Safari%208%20%28%231929%29%2C%20and%20PhantomJS%20%28%232236%29.%0A%20%20var%20nodelist%20%3D%20root.document%20%26%26%20root.document.childNodes%3B%0A%20%20if%20%28typeof%20/./%20%21%3D%20%27function%27%20%26%26%20typeof%20Int8Array%20%21%3D%20%27object%27%20%26%26%20typeof%20nodelist%20%21%3D%20%27function%27%29%20%7B%0A%20%20%20%20_.isFunction%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20typeof%20obj%20%3D%3D%20%27function%27%20%7C%7C%20false%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20//%20Is%20a%20given%20object%20a%20finite%20number%3F%0A%20%20_.isFinite%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20%21_.isSymbol%28obj%29%20%26%26%20isFinite%28obj%29%20%26%26%20%21isNaN%28parseFloat%28obj%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20the%20given%20value%20%60NaN%60%3F%0A%20%20_.isNaN%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20_.isNumber%28obj%29%20%26%26%20isNaN%28obj%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20a%20boolean%3F%0A%20%20_.isBoolean%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20true%20%7C%7C%20obj%20%3D%3D%3D%20false%20%7C%7C%20toString.call%28obj%29%20%3D%3D%3D%20%27%5Bobject%20Boolean%5D%27%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20value%20equal%20to%20null%3F%0A%20%20_.isNull%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20null%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Is%20a%20given%20variable%20undefined%3F%0A%20%20_.isUndefined%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20return%20obj%20%3D%3D%3D%20void%200%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Shortcut%20function%20for%20checking%20if%20an%20object%20has%20a%20given%20property%20directly%0A%20%20//%20on%20itself%20%28in%20other%20words%2C%20not%20on%20a%20prototype%29.%0A%20%20_.has%20%3D%20function%28obj%2C%20path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20has%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20key%20%3D%20path%5Bi%5D%3B%0A%20%20%20%20%20%20if%20%28obj%20%3D%3D%20null%20%7C%7C%20%21hasOwnProperty.call%28obj%2C%20key%29%29%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20obj%5Bkey%5D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20%21%21length%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Utility%20Functions%0A%20%20//%20-----------------%0A%0A%20%20//%20Run%20Underscore.js%20in%20%2AnoConflict%2A%20mode%2C%20returning%20the%20%60_%60%20variable%20to%20its%0A%20%20//%20previous%20owner.%20Returns%20a%20reference%20to%20the%20Underscore%20object.%0A%20%20_.noConflict%20%3D%20function%28%29%20%7B%0A%20%20%20%20root._%20%3D%20previousUnderscore%3B%0A%20%20%20%20return%20this%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Keep%20the%20identity%20function%20around%20for%20default%20iteratees.%0A%20%20_.identity%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20value%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Predicate-generating%20functions.%20Often%20useful%20outside%20of%20Underscore.%0A%20%20_.constant%20%3D%20function%28value%29%20%7B%0A%20%20%20%20return%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20_.noop%20%3D%20function%28%29%7B%7D%3B%0A%0A%20%20//%20Creates%20a%20function%20that%2C%20when%20passed%20an%20object%2C%20will%20traverse%20that%20object%E2%80%99s%0A%20%20//%20properties%20down%20the%20given%20%60path%60%2C%20specified%20as%20an%20array%20of%20keys%20or%20indexes.%0A%20%20_.property%20%3D%20function%28path%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20%7B%0A%20%20%20%20%20%20return%20shallowProperty%28path%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generates%20a%20function%20for%20a%20given%20object%20that%20returns%20a%20given%20property.%0A%20%20_.propertyOf%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20if%20%28obj%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20function%28%29%7B%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20function%28path%29%20%7B%0A%20%20%20%20%20%20return%20%21_.isArray%28path%29%20%3F%20obj%5Bpath%5D%20%3A%20deepGet%28obj%2C%20path%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Returns%20a%20predicate%20for%20checking%20whether%20an%20object%20has%20a%20given%20set%20of%0A%20%20//%20%60key%3Avalue%60%20pairs.%0A%20%20_.matcher%20%3D%20_.matches%20%3D%20function%28attrs%29%20%7B%0A%20%20%20%20attrs%20%3D%20_.extendOwn%28%7B%7D%2C%20attrs%29%3B%0A%20%20%20%20return%20function%28obj%29%20%7B%0A%20%20%20%20%20%20return%20_.isMatch%28obj%2C%20attrs%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Run%20a%20function%20%2A%2An%2A%2A%20times.%0A%20%20_.times%20%3D%20function%28n%2C%20iteratee%2C%20context%29%20%7B%0A%20%20%20%20var%20accum%20%3D%20Array%28Math.max%280%2C%20n%29%29%3B%0A%20%20%20%20iteratee%20%3D%20optimizeCb%28iteratee%2C%20context%2C%201%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20n%3B%20i%2B%2B%29%20accum%5Bi%5D%20%3D%20iteratee%28i%29%3B%0A%20%20%20%20return%20accum%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Return%20a%20random%20integer%20between%20min%20and%20max%20%28inclusive%29.%0A%20%20_.random%20%3D%20function%28min%2C%20max%29%20%7B%0A%20%20%20%20if%20%28max%20%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20max%20%3D%20min%3B%0A%20%20%20%20%20%20min%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20min%20%2B%20Math.floor%28Math.random%28%29%20%2A%20%28max%20-%20min%20%2B%201%29%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20A%20%28possibly%20faster%29%20way%20to%20get%20the%20current%20timestamp%20as%20an%20integer.%0A%20%20_.now%20%3D%20Date.now%20%7C%7C%20function%28%29%20%7B%0A%20%20%20%20return%20new%20Date%28%29.getTime%28%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20List%20of%20HTML%20entities%20for%20escaping.%0A%20%20var%20escapeMap%20%3D%20%7B%0A%20%20%20%20%27%26%27%3A%20%27%26amp%3B%27%2C%0A%20%20%20%20%27%3C%27%3A%20%27%26lt%3B%27%2C%0A%20%20%20%20%27%3E%27%3A%20%27%26gt%3B%27%2C%0A%20%20%20%20%27%22%27%3A%20%27%26quot%3B%27%2C%0A%20%20%20%20%22%27%22%3A%20%27%26%23x27%3B%27%2C%0A%20%20%20%20%27%60%27%3A%20%27%26%23x60%3B%27%0A%20%20%7D%3B%0A%20%20var%20unescapeMap%20%3D%20_.invert%28escapeMap%29%3B%0A%0A%20%20//%20Functions%20for%20escaping%20and%20unescaping%20strings%20to/from%20HTML%20interpolation.%0A%20%20var%20createEscaper%20%3D%20function%28map%29%20%7B%0A%20%20%20%20var%20escaper%20%3D%20function%28match%29%20%7B%0A%20%20%20%20%20%20return%20map%5Bmatch%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20//%20Regexes%20for%20identifying%20a%20key%20that%20needs%20to%20be%20escaped.%0A%20%20%20%20var%20source%20%3D%20%27%28%3F%3A%27%20%2B%20_.keys%28map%29.join%28%27%7C%27%29%20%2B%20%27%29%27%3B%0A%20%20%20%20var%20testRegexp%20%3D%20RegExp%28source%29%3B%0A%20%20%20%20var%20replaceRegexp%20%3D%20RegExp%28source%2C%20%27g%27%29%3B%0A%20%20%20%20return%20function%28string%29%20%7B%0A%20%20%20%20%20%20string%20%3D%20string%20%3D%3D%20null%20%3F%20%27%27%20%3A%20%27%27%20%2B%20string%3B%0A%20%20%20%20%20%20return%20testRegexp.test%28string%29%20%3F%20string.replace%28replaceRegexp%2C%20escaper%29%20%3A%20string%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%3B%0A%20%20_.escape%20%3D%20createEscaper%28escapeMap%29%3B%0A%20%20_.unescape%20%3D%20createEscaper%28unescapeMap%29%3B%0A%0A%20%20//%20Traverses%20the%20children%20of%20%60obj%60%20along%20%60path%60.%20If%20a%20child%20is%20a%20function%2C%20it%0A%20%20//%20is%20invoked%20with%20its%20parent%20as%20context.%20Returns%20the%20value%20of%20the%20final%0A%20%20//%20child%2C%20or%20%60fallback%60%20if%20any%20child%20is%20undefined.%0A%20%20_.result%20%3D%20function%28obj%2C%20path%2C%20fallback%29%20%7B%0A%20%20%20%20if%20%28%21_.isArray%28path%29%29%20path%20%3D%20%5Bpath%5D%3B%0A%20%20%20%20var%20length%20%3D%20path.length%3B%0A%20%20%20%20if%20%28%21length%29%20%7B%0A%20%20%20%20%20%20return%20_.isFunction%28fallback%29%20%3F%20fallback.call%28obj%29%20%3A%20fallback%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20length%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20prop%20%3D%20obj%20%3D%3D%20null%20%3F%20void%200%20%3A%20obj%5Bpath%5Bi%5D%5D%3B%0A%20%20%20%20%20%20if%20%28prop%20%3D%3D%3D%20void%200%29%20%7B%0A%20%20%20%20%20%20%20%20prop%20%3D%20fallback%3B%0A%20%20%20%20%20%20%20%20i%20%3D%20length%3B%20//%20Ensure%20we%20don%27t%20continue%20iterating.%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20obj%20%3D%20_.isFunction%28prop%29%20%3F%20prop.call%28obj%29%20%3A%20prop%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Generate%20a%20unique%20integer%20id%20%28unique%20within%20the%20entire%20client%20session%29.%0A%20%20//%20Useful%20for%20temporary%20DOM%20ids.%0A%20%20var%20idCounter%20%3D%200%3B%0A%20%20_.uniqueId%20%3D%20function%28prefix%29%20%7B%0A%20%20%20%20var%20id%20%3D%20%2B%2BidCounter%20%2B%20%27%27%3B%0A%20%20%20%20return%20prefix%20%3F%20prefix%20%2B%20id%20%3A%20id%3B%0A%20%20%7D%3B%0A%0A%20%20//%20By%20default%2C%20Underscore%20uses%20ERB-style%20template%20delimiters%2C%20change%20the%0A%20%20//%20following%20template%20settings%20to%20use%20alternative%20delimiters.%0A%20%20_.templateSettings%20%3D%20%7B%0A%20%20%20%20evaluate%3A%20/%3C%25%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20interpolate%3A%20/%3C%25%3D%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%2C%0A%20%20%20%20escape%3A%20/%3C%25-%28%5B%5Cs%5CS%5D%2B%3F%29%25%3E/g%0A%20%20%7D%3B%0A%0A%20%20//%20When%20customizing%20%60templateSettings%60%2C%20if%20you%20don%27t%20want%20to%20define%20an%0A%20%20//%20interpolation%2C%20evaluation%20or%20escaping%20regex%2C%20we%20need%20one%20that%20is%0A%20%20//%20guaranteed%20not%20to%20match.%0A%20%20var%20noMatch%20%3D%20/%28.%29%5E/%3B%0A%0A%20%20//%20Certain%20characters%20need%20to%20be%20escaped%20so%20that%20they%20can%20be%20put%20into%20a%0A%20%20//%20string%20literal.%0A%20%20var%20escapes%20%3D%20%7B%0A%20%20%20%20%22%27%22%3A%20%22%27%22%2C%0A%20%20%20%20%27%5C%5C%27%3A%20%27%5C%5C%27%2C%0A%20%20%20%20%27%5Cr%27%3A%20%27r%27%2C%0A%20%20%20%20%27%5Cn%27%3A%20%27n%27%2C%0A%20%20%20%20%27%5Cu2028%27%3A%20%27u2028%27%2C%0A%20%20%20%20%27%5Cu2029%27%3A%20%27u2029%27%0A%20%20%7D%3B%0A%0A%20%20var%20escapeRegExp%20%3D%20/%5C%5C%7C%27%7C%5Cr%7C%5Cn%7C%5Cu2028%7C%5Cu2029/g%3B%0A%0A%20%20var%20escapeChar%20%3D%20function%28match%29%20%7B%0A%20%20%20%20return%20%27%5C%5C%27%20%2B%20escapes%5Bmatch%5D%3B%0A%20%20%7D%3B%0A%0A%20%20//%20In%20order%20to%20prevent%20third-party%20code%20injection%20through%0A%20%20//%20%60_.templateSettings.variable%60%2C%20we%20test%20it%20against%20the%20following%20regular%0A%20%20//%20expression.%20It%20is%20intentionally%20a%20bit%20more%20liberal%20than%20just%20matching%20valid%0A%20%20//%20identifiers%2C%20but%20still%20prevents%20possible%20loopholes%20through%20defaults%20or%0A%20%20//%20destructuring%20assignment.%0A%20%20var%20bareIdentifier%20%3D%20/%5E%5Cs%2A%28%5Cw%7C%5C%24%29%2B%5Cs%2A%24/%3B%0A%0A%20%20//%20JavaScript%20micro-templating%2C%20similar%20to%20John%20Resig%27s%20implementation.%0A%20%20//%20Underscore%20templating%20handles%20arbitrary%20delimiters%2C%20preserves%20whitespace%2C%0A%20%20//%20and%20correctly%20escapes%20quotes%20within%20interpolated%20code.%0A%20%20//%20NB%3A%20%60oldSettings%60%20only%20exists%20for%20backwards%20compatibility.%0A%20%20_.template%20%3D%20function%28text%2C%20settings%2C%20oldSettings%29%20%7B%0A%20%20%20%20if%20%28%21settings%20%26%26%20oldSettings%29%20settings%20%3D%20oldSettings%3B%0A%20%20%20%20settings%20%3D%20_.defaults%28%7B%7D%2C%20settings%2C%20_.templateSettings%29%3B%0A%0A%20%20%20%20//%20Combine%20delimiters%20into%20one%20regular%20expression%20via%20alternation.%0A%20%20%20%20var%20matcher%20%3D%20RegExp%28%5B%0A%20%20%20%20%20%20%28settings.escape%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.interpolate%20%7C%7C%20noMatch%29.source%2C%0A%20%20%20%20%20%20%28settings.evaluate%20%7C%7C%20noMatch%29.source%0A%20%20%20%20%5D.join%28%27%7C%27%29%20%2B%20%27%7C%24%27%2C%20%27g%27%29%3B%0A%0A%20%20%20%20//%20Compile%20the%20template%20source%2C%20escaping%20string%20literals%20appropriately.%0A%20%20%20%20var%20index%20%3D%200%3B%0A%20%20%20%20var%20source%20%3D%20%22__p%2B%3D%27%22%3B%0A%20%20%20%20text.replace%28matcher%2C%20function%28match%2C%20escape%2C%20interpolate%2C%20evaluate%2C%20offset%29%20%7B%0A%20%20%20%20%20%20source%20%2B%3D%20text.slice%28index%2C%20offset%29.replace%28escapeRegExp%2C%20escapeChar%29%3B%0A%20%20%20%20%20%20index%20%3D%20offset%20%2B%20match.length%3B%0A%0A%20%20%20%20%20%20if%20%28escape%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20escape%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A_.escape%28__t%29%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28interpolate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%2B%5Cn%28%28__t%3D%28%22%20%2B%20interpolate%20%2B%20%22%29%29%3D%3Dnull%3F%27%27%3A__t%29%2B%5Cn%27%22%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28evaluate%29%20%7B%0A%20%20%20%20%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%20%2B%20evaluate%20%2B%20%22%5Cn__p%2B%3D%27%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20//%20Adobe%20VMs%20need%20the%20match%20returned%20to%20produce%20the%20correct%20offset.%0A%20%20%20%20%20%20return%20match%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20source%20%2B%3D%20%22%27%3B%5Cn%22%3B%0A%0A%20%20%20%20var%20argument%20%3D%20settings.variable%3B%0A%20%20%20%20if%20%28argument%29%20%7B%0A%20%20%20%20%20%20//%20Insure%20against%20third-party%20code%20injection.%0A%20%20%20%20%20%20if%20%28%21bareIdentifier.test%28argument%29%29%20throw%20new%20Error%28%0A%20%20%20%20%20%20%20%20%27variable%20is%20not%20a%20bare%20identifier%3A%20%27%20%2B%20argument%0A%20%20%20%20%20%20%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20//%20If%20a%20variable%20is%20not%20specified%2C%20place%20data%20values%20in%20local%20scope.%0A%20%20%20%20%20%20source%20%3D%20%27with%28obj%7C%7C%7B%7D%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%5Cn%27%3B%0A%20%20%20%20%20%20argument%20%3D%20%27obj%27%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20source%20%3D%20%22var%20__t%2C__p%3D%27%27%2C__j%3DArray.prototype.join%2C%22%20%2B%0A%20%20%20%20%20%20%22print%3Dfunction%28%29%7B__p%2B%3D__j.call%28arguments%2C%27%27%29%3B%7D%3B%5Cn%22%20%2B%0A%20%20%20%20%20%20source%20%2B%20%27return%20__p%3B%5Cn%27%3B%0A%0A%20%20%20%20var%20render%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20render%20%3D%20new%20Function%28argument%2C%20%27_%27%2C%20source%29%3B%0A%20%20%20%20%7D%20catch%20%28e%29%20%7B%0A%20%20%20%20%20%20e.source%20%3D%20source%3B%0A%20%20%20%20%20%20throw%20e%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20template%20%3D%20function%28data%29%20%7B%0A%20%20%20%20%20%20return%20render.call%28this%2C%20data%2C%20_%29%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20//%20Provide%20the%20compiled%20source%20as%20a%20convenience%20for%20precompilation.%0A%20%20%20%20template.source%20%3D%20%27function%28%27%20%2B%20argument%20%2B%20%27%29%7B%5Cn%27%20%2B%20source%20%2B%20%27%7D%27%3B%0A%0A%20%20%20%20return%20template%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20a%20%22chain%22%20function.%20Start%20chaining%20a%20wrapped%20Underscore%20object.%0A%20%20_.chain%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20var%20instance%20%3D%20_%28obj%29%3B%0A%20%20%20%20instance._chain%20%3D%20true%3B%0A%20%20%20%20return%20instance%3B%0A%20%20%7D%3B%0A%0A%20%20//%20OOP%0A%20%20//%20---------------%0A%20%20//%20If%20Underscore%20is%20called%20as%20a%20function%2C%20it%20returns%20a%20wrapped%20object%20that%0A%20%20//%20can%20be%20used%20OO-style.%20This%20wrapper%20holds%20altered%20versions%20of%20all%20the%0A%20%20//%20underscore%20functions.%20Wrapped%20objects%20may%20be%20chained.%0A%0A%20%20//%20Helper%20function%20to%20continue%20chaining%20intermediate%20results.%0A%20%20var%20chainResult%20%3D%20function%28instance%2C%20obj%29%20%7B%0A%20%20%20%20return%20instance._chain%20%3F%20_%28obj%29.chain%28%29%20%3A%20obj%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20your%20own%20custom%20functions%20to%20the%20Underscore%20object.%0A%20%20_.mixin%20%3D%20function%28obj%29%20%7B%0A%20%20%20%20_.each%28_.functions%28obj%29%2C%20function%28name%29%20%7B%0A%20%20%20%20%20%20var%20func%20%3D%20_%5Bname%5D%20%3D%20obj%5Bname%5D%3B%0A%20%20%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20args%20%3D%20%5Bthis._wrapped%5D%3B%0A%20%20%20%20%20%20%20%20push.apply%28args%2C%20arguments%29%3B%0A%20%20%20%20%20%20%20%20return%20chainResult%28this%2C%20func.apply%28_%2C%20args%29%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20return%20_%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Add%20all%20of%20the%20Underscore%20functions%20to%20the%20wrapper%20object.%0A%20%20_.mixin%28_%29%3B%0A%0A%20%20//%20Add%20all%20mutator%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27pop%27%2C%20%27push%27%2C%20%27reverse%27%2C%20%27shift%27%2C%20%27sort%27%2C%20%27splice%27%2C%20%27unshift%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20obj%20%3D%20this._wrapped%3B%0A%20%20%20%20%20%20method.apply%28obj%2C%20arguments%29%3B%0A%20%20%20%20%20%20if%20%28%28name%20%3D%3D%3D%20%27shift%27%20%7C%7C%20name%20%3D%3D%3D%20%27splice%27%29%20%26%26%20obj.length%20%3D%3D%3D%200%29%20delete%20obj%5B0%5D%3B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20obj%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Add%20all%20accessor%20Array%20functions%20to%20the%20wrapper.%0A%20%20_.each%28%5B%27concat%27%2C%20%27join%27%2C%20%27slice%27%5D%2C%20function%28name%29%20%7B%0A%20%20%20%20var%20method%20%3D%20ArrayProto%5Bname%5D%3B%0A%20%20%20%20_.prototype%5Bname%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20chainResult%28this%2C%20method.apply%28this._wrapped%2C%20arguments%29%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%29%3B%0A%0A%20%20//%20Extracts%20the%20result%20from%20a%20wrapped%20and%20chained%20object.%0A%20%20_.prototype.value%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20this._wrapped%3B%0A%20%20%7D%3B%0A%0A%20%20//%20Provide%20unwrapping%20proxy%20for%20some%20methods%20used%20in%20engine%20operations%0A%20%20//%20such%20as%20arithmetic%20and%20JSON%20stringification.%0A%20%20_.prototype.valueOf%20%3D%20_.prototype.toJSON%20%3D%20_.prototype.value%3B%0A%0A%20%20_.prototype.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20return%20String%28this._wrapped%29%3B%0A%20%20%7D%3B%0A%0A%20%20//%20AMD%20registration%20happens%20at%20the%20end%20for%20compatibility%20with%20AMD%20loaders%0A%20%20//%20that%20may%20not%20enforce%20next-turn%20semantics%20on%20modules.%20Even%20though%20general%0A%20%20//%20practice%20for%20AMD%20registration%20is%20to%20be%20anonymous%2C%20underscore%20registers%0A%20%20//%20as%20a%20named%20module%20because%2C%20like%20jQuery%2C%20it%20is%20a%20base%20library%20that%20is%0A%20%20//%20popular%20enough%20to%20be%20bundled%20