diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 584d965ed03..3eca89d6417 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -191,6 +191,8 @@ build-idp-image: --build-arg "ARG_CI_COMMIT_SHA=${CI_COMMIT_SHA}" --build-arg "LARGE_FILES_TOKEN=${LARGE_FILES_TOKEN}" --build-arg "LARGE_FILES_USER=${LARGE_FILES_USER}" + --build-arg "SERVICE_PROVIDERS_KEY=${SERVICE_PROVIDERS_KEY}" + check_changelog: stage: test @@ -832,7 +834,7 @@ pinpoint_check_scheduled: --channel "#login-appdev" \ --webhook "${SLACK_WEBHOOK}" \ --raise \ - --text "Pinpoint supported countries check in GitLab failed.\nBuild Results: ${CI_JOB_URL}.\nCheck results locally with 'make lint_country_dialing_codes'" + --text "$(printf "Pinpoint supported countries check in GitLab failed.\nBuild Results: ${CI_JOB_URL}.\nCheck results locally with 'make lint_country_dialing_codes'")"" fi rules: - if: $CI_PIPELINE_SOURCE == "schedule" @@ -856,7 +858,7 @@ audit_packages_scheduled: --channel "#login-appdev" \ --webhook "${SLACK_WEBHOOK}" \ --raise \ - --text "Dependencies audit in GitLab failed.\nBuild Results: ${CI_JOB_URL}\nCheck results locally with 'make audit'" + --text "$(printf "Dependencies audit in GitLab failed.\nBuild Results: ${CI_JOB_URL}\nCheck results locally with 'make audit'")" fi rules: - if: $CI_PIPELINE_SOURCE == "schedule" diff --git a/Gemfile b/Gemfile index ce4c26eac09..cd2fb4551f1 100644 --- a/Gemfile +++ b/Gemfile @@ -73,7 +73,7 @@ gem 'rqrcode' gem 'ruby-progressbar' gem 'ruby-saml' gem 'safe_target_blank', '>= 1.0.2' -gem 'saml_idp', github: '18F/saml_idp', tag: '0.21.4-18f' +gem 'saml_idp', github: '18F/saml_idp', tag: '0.21.6-18f' gem 'scrypt' gem 'simple_form', '>= 5.0.2' gem 'stringex', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 2a48f87a350..28d3d42dd70 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -35,10 +35,10 @@ GIT GIT remote: https://github.com/18F/saml_idp.git - revision: 5e9999ef8e9260cda74cfea0a637f754994e0f9d - tag: 0.21.4-18f + revision: 512ad9b1609884781034773f6c4ccd53e7036a82 + tag: 0.21.6-18f specs: - saml_idp (0.21.4.pre.18f) + saml_idp (0.21.6.pre.18f) activesupport builder faraday @@ -578,7 +578,7 @@ GEM actionpack (>= 5.0) railties (>= 5.0) retries (0.0.5) - rexml (3.3.2) + rexml (3.3.4) strscan rotp (6.3.0) rouge (4.2.0) diff --git a/app/assets/images/email/real-id-and-fair-evidence-documents.png b/app/assets/images/email/real-id-and-fair-evidence-documents.png new file mode 100644 index 00000000000..822305dfec8 Binary files /dev/null and b/app/assets/images/email/real-id-and-fair-evidence-documents.png differ diff --git a/app/assets/images/idv/real-id-and-fair-evidence-documents.svg b/app/assets/images/idv/real-id-and-fair-evidence-documents.svg new file mode 100644 index 00000000000..72e70fe7421 --- /dev/null +++ b/app/assets/images/idv/real-id-and-fair-evidence-documents.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/stylesheets/email.css.scss b/app/assets/stylesheets/email.css.scss index d3310b4f25d..acbd6d0c650 100644 --- a/app/assets/stylesheets/email.css.scss +++ b/app/assets/stylesheets/email.css.scss @@ -5,6 +5,8 @@ @use 'variables/app' as *; @use 'variables/email' as *; +@forward 'usa-tag'; + .gray { &:active, &:hover, @@ -73,10 +75,6 @@ h6 { width: 50%; } -.half { - width: 50%; -} - .footer { background: $secondary-color; diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 26fb60412fb..2f0dff19bab 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -111,7 +111,7 @@ def resolved_authn_context_result service_provider: service_provider, vtr: sp_session[:vtr], acr_values: sp_session[:acr_values], - ).resolve + ).result end end diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index b046cb3cc7b..5f1c7535610 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -31,15 +31,16 @@ def new def create session[:sign_in_flow] = :sign_in - return process_locked_out_session if session_bad_password_count_max_exceeded? + return process_rate_limited if session_bad_password_count_max_exceeded? return process_locked_out_user if current_user && user_locked_out?(current_user) + return process_rate_limited if rate_limited? return process_failed_captcha if !valid_captcha_result? rate_limit_password_failure = true self.resource = warden.authenticate!(auth_options) handle_valid_authentication ensure - increment_session_bad_password_count if rate_limit_password_failure && !current_user + handle_invalid_authentication if rate_limit_password_failure && !current_user track_authentication_attempt(auth_params[:email]) end @@ -71,7 +72,7 @@ def increment_session_bad_password_count session[:max_bad_passwords_at] ||= Time.zone.now.to_i end - def process_locked_out_session + def process_rate_limited sign_out(:user) warden.lock! @@ -83,9 +84,14 @@ def process_locked_out_session end def locked_out_time_remaining - locked_at = session[:max_bad_passwords_at] - window = IdentityConfig.store.max_bad_passwords_window_in_seconds.seconds - time_lockout_expires = Time.zone.at(locked_at) + window + if session[:max_bad_passwords_at] + locked_at = session[:max_bad_passwords_at] + window = IdentityConfig.store.max_bad_passwords_window_in_seconds.seconds + time_lockout_expires = Time.zone.at(locked_at) + window + else + time_lockout_expires = rate_limiter&.expires_at || Time.zone.now + end + distance_of_time_in_words(Time.zone.now, time_lockout_expires, true) end @@ -147,7 +153,13 @@ def process_locked_out_user render_full_width('two_factor_authentication/_locked', locals: { presenter: presenter }) end + def handle_invalid_authentication + rate_limiter&.increment! + increment_session_bad_password_count + end + def handle_valid_authentication + rate_limiter&.reset! sign_in(resource_name, resource) cache_profiles(auth_params[:password]) set_new_device_session(nil) @@ -171,6 +183,7 @@ def track_authentication_attempt(email) success: success, user_id: user.uuid, user_locked_out: user_locked_out?(user), + rate_limited: rate_limited?, valid_captcha_result: valid_captcha_result?, bad_password_count: session[:bad_password_count].to_i, sp_request_url_present: sp_session[:request_url].present?, @@ -183,6 +196,20 @@ def user_locked_out?(user) user.locked_out? end + def rate_limited? + !!rate_limiter&.limited? + end + + def rate_limiter + return @rate_limiter if defined?(@rate_limiter) + user = User.find_with_email(auth_params[:email]) + return @rate_limiter = nil unless user + @rate_limiter = RateLimiter.new( + rate_limit_type: :sign_in_user_id_per_ip, + target: [user.id, request.ip].join('-'), + ) + end + def store_sp_metadata_in_session return if sp_session[:issuer] || request_id.blank? StoreSpMetadataInSession.new(session: session, request_id: request_id).call @@ -214,23 +241,17 @@ def pending_account_reset_request def override_csp_for_google_analytics return unless IdentityConfig.store.participate_in_dap + # See: https://github.com/digital-analytics-program/gov-wide-code#content-security-policy policy = current_content_security_policy policy.script_src( *policy.script_src, 'dap.digitalgov.gov', 'www.google-analytics.com', - '*.googletagmanager.com', + 'www.googletagmanager.com', ) policy.connect_src( *policy.connect_src, - '*.google-analytics.com', - '*.analytics.google.com', - '*.googletagmanager.com', - ) - policy.img_src( - *policy.img_src, - '*.google-analytics.com', - '*.googletagmanager.com', + 'www.google-analytics.com', ) request.content_security_policy = policy end diff --git a/app/forms/idv/doc_pii_form.rb b/app/forms/idv/doc_pii_form.rb index ab7fae6a403..cc3355bb9d9 100644 --- a/app/forms/idv/doc_pii_form.rb +++ b/app/forms/idv/doc_pii_form.rb @@ -18,9 +18,10 @@ class DocPiiForm validates_presence_of :state_id_number, { message: proc { I18n.t('doc_auth.errors.general.no_liveness') } } + validate :state_id_expired? attr_reader :first_name, :last_name, :dob, :address1, :state, :zipcode, :attention_with_barcode, - :jurisdiction, :state_id_number + :jurisdiction, :state_id_number, :state_id_expiration alias_method :attention_with_barcode?, :attention_with_barcode def initialize(pii:, attention_with_barcode: false) @@ -33,6 +34,7 @@ def initialize(pii:, attention_with_barcode: false) @zipcode = pii[:zipcode] @jurisdiction = pii[:state_id_jurisdiction] @state_id_number = pii[:state_id_number] + @state_id_expiration = pii[:state_id_expiration] @attention_with_barcode = attention_with_barcode end @@ -106,6 +108,12 @@ def dob_valid? end end + def state_id_expired? + if state_id_expiration && DateParser.parse_legacy(state_id_expiration).past? + errors.add(:state_id_expiration, generic_error, type: :state_id_expiration) + end + end + def zipcode_valid? return if zipcode.is_a?(String) && zipcode.present? diff --git a/app/javascript/packages/document-capture/components/acuant-selfie-camera.tsx b/app/javascript/packages/document-capture/components/acuant-selfie-camera.tsx index e60bc59c09c..6063dce58b6 100644 --- a/app/javascript/packages/document-capture/components/acuant-selfie-camera.tsx +++ b/app/javascript/packages/document-capture/components/acuant-selfie-camera.tsx @@ -83,6 +83,11 @@ interface FaceDetectionStates { TOO_MANY_FACES: string; FACE_TOO_SMALL: string; FACE_CLOSE_TO_BORDER: string; + CLOSE_TEXT: string; + RETAKE_TEXT: string; + INTRO_TEXT: string; + SUBMIT_ALT: string; + CAPTURE_ALT: string; } function AcuantSelfieCamera({ @@ -145,6 +150,11 @@ function AcuantSelfieCamera({ TOO_MANY_FACES: t('doc_auth.info.selfie_capture_status.too_many_faces'), FACE_TOO_SMALL: t('doc_auth.info.selfie_capture_status.face_too_small'), FACE_CLOSE_TO_BORDER: t('doc_auth.info.selfie_capture_status.face_close_to_border'), + CLOSE_TEXT: t('doc_auth.info.selfie_capture.action.close'), + RETAKE_TEXT: t('doc_auth.info.selfie_capture.action.retake'), + INTRO_TEXT: t('doc_auth.info.selfie_capture.intro'), + SUBMIT_ALT: t('doc_auth.info.selfie_capture.action.submit'), + CAPTURE_ALT: t('doc_auth.info.selfie_capture.action.capture'), }; const cleanupSelfieCamera = () => { window.AcuantPassiveLiveness.end(); diff --git a/app/presenters/openid_connect_user_info_presenter.rb b/app/presenters/openid_connect_user_info_presenter.rb index 45dcca75cbf..1fd4f925e22 100644 --- a/app/presenters/openid_connect_user_info_presenter.rb +++ b/app/presenters/openid_connect_user_info_presenter.rb @@ -24,7 +24,7 @@ def user_info info.merge!(x509_attributes) if scoper.x509_scopes_requested? info[:verified_at] = verified_at if scoper.verified_at_requested? if identity.vtr.nil? - info[:ial] = asserted_ial_value + info[:ial] = authn_context_resolver.asserted_ial_acr info[:aal] = identity.requested_aal_value else info[:vot] = vot_values @@ -40,26 +40,13 @@ def url_options private - def asserted_ial_value - return Saml::Idp::Constants::IAL1_AUTHN_CONTEXT_CLASSREF unless active_profile.present? - - if resolved_authn_context_result.biometric_comparison? - Saml::Idp::Constants::IAL2_BIO_REQUIRED_AUTHN_CONTEXT_CLASSREF - elsif resolved_authn_context_result.identity_proofing? || - resolved_authn_context_result.ialmax? - Saml::Idp::Constants::IAL2_AUTHN_CONTEXT_CLASSREF - else - Saml::Idp::Constants::IAL1_AUTHN_CONTEXT_CLASSREF - end - end - def vot_values AuthnContextResolver.new( user: identity.user, vtr: JSON.parse(identity.vtr), service_provider: identity&.service_provider_record, acr_values: nil, - ).resolve.expanded_component_values + ).result.expanded_component_values end def uuid_from_sp_identity(identity) @@ -151,12 +138,16 @@ def identity_proofing_requested_for_verified_user? end def resolved_authn_context_result - @resolved_authn_context_result ||= AuthnContextResolver.new( + authn_context_resolver.result + end + + def authn_context_resolver + @authn_context_resolver ||= AuthnContextResolver.new( user: identity.user, service_provider: identity&.service_provider_record, vtr: identity.vtr.presence && JSON.parse(identity.vtr), acr_values: identity.acr_values, - ).resolve + ) end def ial2_session? diff --git a/app/presenters/piv_cac_authentication_login_presenter.rb b/app/presenters/piv_cac_authentication_login_presenter.rb index d65e870e0d2..7bce8678cc5 100644 --- a/app/presenters/piv_cac_authentication_login_presenter.rb +++ b/app/presenters/piv_cac_authentication_login_presenter.rb @@ -28,6 +28,6 @@ def heading end def info - t('instructions.mfa.piv_cac.sign_in_html', app_name: APP_NAME) + t('instructions.mfa.piv_cac.sign_in', app_name: APP_NAME) end end diff --git a/app/services/analytics.rb b/app/services/analytics.rb index 0f1ee156c45..85112740018 100644 --- a/app/services/analytics.rb +++ b/app/services/analytics.rb @@ -125,7 +125,7 @@ def resolved_authn_context_result service_provider:, vtr: session[:sp][:vtr], acr_values: session[:sp][:acr_values], - ).resolve + ).result rescue Vot::Parser::ParseException return end diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 762fb91c7af..380ca101501 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -410,6 +410,7 @@ def edit_password_visit(required_password_change: false, **extra) # @param [Boolean] success # @param [String] user_id # @param [Boolean] user_locked_out if the user is currently locked out of their second factor + # @param [Boolean] rate_limited Whether the user has exceeded user IP rate limiting # @param [Boolean] valid_captcha_result Whether user passed the reCAPTCHA check # @param [String] bad_password_count represents number of prior login failures # @param [Boolean] sp_request_url_present if was an SP request URL in the session @@ -421,6 +422,7 @@ def email_and_password_auth( success:, user_id:, user_locked_out:, + rate_limited:, valid_captcha_result:, bad_password_count:, sp_request_url_present:, @@ -433,6 +435,7 @@ def email_and_password_auth( success:, user_id:, user_locked_out:, + rate_limited:, valid_captcha_result:, bad_password_count:, sp_request_url_present:, diff --git a/app/services/attribute_asserter.rb b/app/services/attribute_asserter.rb index c31ff8b81f3..125a720d3be 100644 --- a/app/services/attribute_asserter.rb +++ b/app/services/attribute_asserter.rb @@ -68,14 +68,18 @@ def ial2_service_provider? end def resolved_authn_context_result - @resolved_authn_context_result ||= begin + authn_context_resolver.result + end + + def authn_context_resolver + @authn_context_resolver ||= begin saml = FederatedProtocols::Saml.new(authn_request) AuthnContextResolver.new( user: user, service_provider: service_provider, vtr: saml.vtr, acr_values: saml.acr_values, - ).resolve + ) end end @@ -149,18 +153,8 @@ def add_aal(attrs) end def add_ial(attrs) - requested_context = authn_request.requested_ial_authn_context - context = if ialmax_requested_and_fullfilable? - # IAL2 since IALMAX only works for IAL2 SPs - sp_ial - else - requested_context.presence || sp_ial - end - attrs[:ial] = { getter: ial_getter_function(context) } if context - end - - def ialmax_requested_and_fullfilable? - resolved_authn_context_result.ialmax? && user.active_profile.present? + asserted_ial = authn_context_resolver.asserted_ial_acr + attrs[:ial] = { getter: ial_getter_function(asserted_ial) } if asserted_ial end def sp_ial diff --git a/app/services/authn_context_resolver.rb b/app/services/authn_context_resolver.rb index 555444cc6d9..20accf95380 100644 --- a/app/services/authn_context_resolver.rb +++ b/app/services/authn_context_resolver.rb @@ -10,11 +10,24 @@ def initialize(user:, service_provider:, vtr:, acr_values:) @acr_values = acr_values end - def resolve - if vtr.present? - selected_vtr_parser_result_from_vtr_list + def result + @result ||= if vtr.present? + selected_vtr_parser_result_from_vtr_list + else + acr_result + end + end + + def asserted_ial_acr + return Saml::Idp::Constants::IAL1_AUTHN_CONTEXT_CLASSREF unless user.active_profile.present? + + if result.biometric_comparison? + Saml::Idp::Constants::IAL2_BIO_REQUIRED_AUTHN_CONTEXT_CLASSREF + elsif result.identity_proofing? || + result.ialmax? + Saml::Idp::Constants::IAL2_AUTHN_CONTEXT_CLASSREF else - acr_result + Saml::Idp::Constants::IAL1_AUTHN_CONTEXT_CLASSREF end end diff --git a/app/services/doc_auth/mock/yml_loader_concern.rb b/app/services/doc_auth/mock/yml_loader_concern.rb index 815b18534a7..431741916a5 100644 --- a/app/services/doc_auth/mock/yml_loader_concern.rb +++ b/app/services/doc_auth/mock/yml_loader_concern.rb @@ -8,10 +8,10 @@ module YmlLoaderConcern def parse_yaml(uploaded_file) data = YAML.safe_load(uploaded_file, permitted_classes: [Date]) if data.is_a?(Hash) - if (m = data.dig('document', 'dob').to_s. - match(%r{(?\d{1,2})/(?\d{1,2})/(?\d{4})})) - data['document']['dob'] = - Date.new(m[:year].to_i, m[:month].to_i, m[:day].to_i) + ['dob', 'state_id_expiration'].each do |date_key| + if (date_s = data.dig('document', date_key)) + data['document'][date_key] = DateParser.parse_legacy(date_s) + end end if data.dig('document', 'zipcode') diff --git a/app/services/id_token_builder.rb b/app/services/id_token_builder.rb index 80649b4a10a..7ba17d7c458 100644 --- a/app/services/id_token_builder.rb +++ b/app/services/id_token_builder.rb @@ -99,7 +99,7 @@ def resolved_authn_context_result service_provider: identity.service_provider_record, vtr: parsed_vtr_value, acr_values: identity.acr_values, - ).resolve + ).result end def parsed_vtr_value diff --git a/app/services/rate_limiter.rb b/app/services/rate_limiter.rb index 7ef94fbbafc..16b2ce32b70 100644 --- a/app/services/rate_limiter.rb +++ b/app/services/rate_limiter.rb @@ -6,6 +6,22 @@ class RateLimiter attr_reader :rate_limit_type + EXPONENTIAL_INCREMENT_SCRIPT = <<~LUA + local count = redis.call('incr', KEYS[1]) + local now = tonumber(ARGV[1]) + local minutes = tonumber(ARGV[2]) + local exponential_factor = tonumber(ARGV[3]) + local attempt_window_max = tonumber(ARGV[4]) + minutes = math.floor(minutes * (exponential_factor ^ (count - 1))) + if attempt_window_max then + minutes = math.min(minutes, attempt_window_max) + end + redis.call('expireat', KEYS[1], now + (minutes * 60)) + return count + LUA + + EXPONENTIAL_INCREMENT_SCRIPT_SHA1 = Digest::SHA1.hexdigest(EXPONENTIAL_INCREMENT_SCRIPT).freeze + def initialize(rate_limit_type:, user: nil, target: nil) @rate_limit_type = rate_limit_type @user = user @@ -51,7 +67,7 @@ def attempted_at def expires_at return nil if attempted_at.blank? - attempted_at + RateLimiter.attempt_window_in_minutes(rate_limit_type).minutes + attempted_at + expiration_minutes.minutes end def remaining_count @@ -69,18 +85,40 @@ def maxed? attempts && attempts >= RateLimiter.max_attempts(rate_limit_type) end + def expiration_minutes + minutes = RateLimiter.attempt_window_in_minutes(rate_limit_type) + exponential_factor = RateLimiter.attempt_window_exponential_factor(rate_limit_type) + attempt_window_max = RateLimiter.attempt_window_max_in_minutes(rate_limit_type) + minutes *= exponential_factor ** (attempts - 1) if exponential_factor && attempts.positive? + if attempt_window_max && minutes > attempt_window_max + attempt_window_max + else + minutes + end + end + def increment! return if limited? value = nil + minutes = RateLimiter.attempt_window_in_minutes(rate_limit_type) + exponential_factor = RateLimiter.attempt_window_exponential_factor(rate_limit_type) now = Time.zone.now REDIS_THROTTLE_POOL.with do |client| - value, _success = client.multi do |multi| - multi.incr(key) - multi.expireat( - key, - now + RateLimiter.attempt_window_in_minutes(rate_limit_type).minutes.in_seconds, - ) + if exponential_factor.present? + attempt_window_max = RateLimiter.attempt_window_max_in_minutes(rate_limit_type) + script_args = [now.to_i, minutes, exponential_factor, attempt_window_max].map(&:to_s) + begin + value = client.evalsha(EXPONENTIAL_INCREMENT_SCRIPT_SHA1, [key], script_args) + rescue Redis::CommandError => error + raise error unless error.message.start_with?('NOSCRIPT') + value = client.eval(EXPONENTIAL_INCREMENT_SCRIPT, [key], script_args) + end + else + value, _success = client.multi do |multi| + multi.incr(key) + multi.expireat(key, now + minutes.minutes.in_seconds) + end end end @@ -109,7 +147,7 @@ def fetch_state! else @redis_attempted_at = ActiveSupport::TimeZone['UTC'].at(expiretime).in_time_zone(Time.zone) - - RateLimiter.attempt_window_in_minutes(rate_limit_type).minutes + expiration_minutes.minutes end self @@ -132,7 +170,7 @@ def increment_to_limited! client.set( key, value, - exat: now.to_i + RateLimiter.attempt_window_in_minutes(rate_limit_type).minutes.in_seconds, + exat: now + expiration_minutes.minutes.in_seconds, ) end @@ -155,6 +193,14 @@ def self.attempt_window_in_minutes(rate_limit_type) rate_limit_config.dig(rate_limit_type, :attempt_window) end + def self.attempt_window_exponential_factor(rate_limit_type) + rate_limit_config.dig(rate_limit_type, :attempt_window_exponential_factor) + end + + def self.attempt_window_max_in_minutes(rate_limit_type) + rate_limit_config.dig(rate_limit_type, :attempt_window_max) + end + def self.max_attempts(rate_limit_type) rate_limit_config.dig(rate_limit_type, :max_attempts) end @@ -222,6 +268,13 @@ def self.load_rate_limit_config attempt_window: IdentityConfig.store. short_term_phone_otp_max_attempt_window_in_seconds.seconds.in_minutes.to_f, }, + sign_in_user_id_per_ip: { + max_attempts: IdentityConfig.store.sign_in_user_id_per_ip_max_attempts, + attempt_window: IdentityConfig.store.sign_in_user_id_per_ip_attempt_window_in_minutes, + attempt_window_exponential_factor: + IdentityConfig.store.sign_in_user_id_per_ip_attempt_window_exponential_factor, + attempt_window_max: IdentityConfig.store.sign_in_user_id_per_ip_attempt_window_max_minutes, + }, }.with_indifferent_access end diff --git a/app/views/idv/in_person/ready_to_verify/show.html.erb b/app/views/idv/in_person/ready_to_verify/show.html.erb index ec01d74f753..36eff52cb02 100644 --- a/app/views/idv/in_person/ready_to_verify/show.html.erb +++ b/app/views/idv/in_person/ready_to_verify/show.html.erb @@ -23,15 +23,26 @@ <%= @presenter.barcode_heading_text %> <% end %> -
- <%= render 'idv/shared/mini_logo' %> - <%= render BarcodeComponent.new( - barcode_data: @presenter.enrollment_code, - label: t('in_person_proofing.process.barcode.caption_label'), - label_formatter: Idv::InPerson::EnrollmentCodeFormatter.method(:format), - ) %> -
+<%# Tag for GSA Enhanced Pilot Barcode %> +<% if @is_enhanced_ipp %> +
+ + <%= t('in_person_proofing.body.barcode.eipp_tag') %> + +
+<% end %> +<%# Barcode %> +
+ <%= render 'idv/shared/mini_logo' %> + <%= render BarcodeComponent.new( + barcode_data: @presenter.enrollment_code, + label: t('in_person_proofing.process.barcode.caption_label'), + label_formatter: Idv::InPerson::EnrollmentCodeFormatter.method(:format), + ) %> +
+ +<%# Alert %> <%= render AlertComponent.new(type: :info, class: 'margin-y-4', text_tag: :div) do %>

<%= t('in_person_proofing.body.barcode.deadline', deadline: @presenter.formatted_due_date) %>

<%= t('in_person_proofing.body.barcode.deadline_restart') %>

@@ -44,9 +55,10 @@

<%= t('in_person_proofing.headings.barcode_what_to_bring') %>

<%= t('in_person_proofing.body.barcode.eipp_what_to_bring') %>

- <%# Option 1: Bring a Real ID %> + <%# Option 1: Bring a REAL ID %> + <%# A. REAL ID with current address %>

<%= t('in_person_proofing.process.eipp_bring_id.heading') %>

-
+
<%= image_tag( asset_url('idv/real-id.svg'), width: 110, @@ -55,20 +67,45 @@ class: 'grid-col-auto margin-left-0 margin-bottom-2', role: 'img', ) %> -

<%= t('in_person_proofing.process.eipp_bring_id.info') %>

+
+

<%= t('in_person_proofing.process.eipp_bring_id_with_current_address.heading') %>

+

<%= t('in_person_proofing.process.eipp_bring_id.info') %>

+

- <%# Option 2: Bring a standard State ID... %> -

<%= t('in_person_proofing.process.eipp_bring_id_plus_documents.heading') %>

+ <%# B. REAL ID + two support documents %> +
+ <%= image_tag( + asset_url('idv/real-id-and-fair-evidence-documents.svg'), + width: 110, + height: 107, + alt: t('in_person_proofing.process.real_id_and_supporting_docs.image_alt_text'), + class: 'grid-col-auto margin-left-0 margin-bottom-3 tablet:margin-bottom-0', + role: 'img', + ) %> +
+

<%= t('in_person_proofing.process.real_id_and_supporting_docs.heading') %>

+

<%= t('in_person_proofing.process.real_id_and_supporting_docs.info') %>

+
    + <% t('in_person_proofing.process.eipp_state_id_supporting_docs.info_list').each do |doc| %> +
  • <%= doc %>
  • + <% end %> +
+
+
+
+ + <%# Option 2: Bring a standard state-issued ID plus supporting documents %> +

<%= t('in_person_proofing.process.eipp_bring_id_plus_documents.heading') %>

<%= t('in_person_proofing.process.eipp_bring_id_plus_documents.info') %>

- <%# A. State ID + Passport %> + <%# A. State-issued ID + Passport %>
<%= image_tag( asset_url('idv/state-id-and-passport.svg'), - width: 110.46, - height: 129.11, + width: 110, + height: 129, alt: t('in_person_proofing.process.eipp_state_id_passport.image_alt_text'), class: 'grid-col-auto margin-left-0 margin-bottom-3 tablet:margin-bottom-0', role: 'img', @@ -80,11 +117,11 @@

- <%# B. State ID + Military ID %> + <%# B. State-issued ID + military ID %>
<%= image_tag( asset_url('idv/state-id-and-military-id.svg'), - width: 110.46, + width: 110, height: 93, alt: t('in_person_proofing.process.eipp_state_id_military_id.image_alt_text'), class: 'grid-col-auto margin-left-0 margin-bottom-3 tablet:margin-bottom-0', @@ -97,11 +134,11 @@

- <%# C. State ID + two supporting documents %> + <%# C. State-issued ID + two supporting documents %>
<%= image_tag( asset_url('idv/state-id-and-fair-evidence-documents.svg'), - width: 110.46, + width: 110, height: 107, alt: t('in_person_proofing.process.eipp_state_id_supporting_docs.image_alt_text'), class: 'grid-col-auto margin-left-0 margin-bottom-3 tablet:margin-bottom-0', diff --git a/app/views/user_mailer/account_reset_granted.html.erb b/app/views/user_mailer/account_reset_granted.html.erb index 4da0fcc5ec8..f2dff5125d7 100644 --- a/app/views/user_mailer/account_reset_granted.html.erb +++ b/app/views/user_mailer/account_reset_granted.html.erb @@ -17,8 +17,6 @@ - - diff --git a/app/views/user_mailer/shared/_in_person_ready_to_verify.html.erb b/app/views/user_mailer/shared/_in_person_ready_to_verify.html.erb index a47daa7a5b9..31d9484affe 100644 --- a/app/views/user_mailer/shared/_in_person_ready_to_verify.html.erb +++ b/app/views/user_mailer/shared/_in_person_ready_to_verify.html.erb @@ -14,6 +14,15 @@ <% end %> +<%# Tag for GSA Enhanced Pilot Barcode %> +<% if @is_enhanced_ipp %> +
+ + <%= t('in_person_proofing.body.barcode.eipp_tag') %> + +
+<% end %> + <%# Barcode %>
<%= render 'idv/shared/mini_logo', filename: 'email/logo.png' %> @@ -25,7 +34,7 @@ ) %>
-<%# Alert box %> +<%# Alert %>
@@ -38,17 +47,18 @@
-<%# Enhanced IPP Only - What to bring section %> +<%# Enhanced IPP Only - What to bring to the Post Office %> <% if @is_enhanced_ipp %>
<%# What to bring to the Post Office %>

<%= t('in_person_proofing.headings.barcode_what_to_bring') %>

<%= t('in_person_proofing.body.barcode.eipp_what_to_bring') %>

- <%# Option 1: Bring a Real ID %> + <%# Option 1: Bring a REAL ID %> + <%# A. REAL ID with current address %>

<%= t('in_person_proofing.process.eipp_bring_id.heading') %>

- +
+ + +
@@ -58,13 +68,44 @@ height: 80, alt: t('in_person_proofing.process.eipp_bring_id.image_alt_text'), role: 'img', - class: 'margin-bottom-3', ) %> -

<%= t('in_person_proofing.process.eipp_bring_id.info') %>

+

<%= t('in_person_proofing.process.eipp_bring_id_with_current_address.heading') %>

+

<%= t('in_person_proofing.process.eipp_bring_id.info') %>

+
+
+
+ + <%# B. REAL ID + two support documents %> +
+ + + + + + @@ -72,11 +113,11 @@
- <%# Option 2: Bring a standard State ID... %> + <%# Option 2: Bring a standard state-issued ID plus supporting documents %>

<%= t('in_person_proofing.process.eipp_bring_id_plus_documents.heading') %>

<%= t('in_person_proofing.process.eipp_bring_id_plus_documents.info') %>

- <%# A. State ID + Passport %> + <%# A. State-issued ID + Passport %>
+ <%= image_tag( + asset_url('email/real-id-and-fair-evidence-documents.png'), + width: 110, + height: 107, + alt: t('in_person_proofing.process.real_id_and_supporting_docs.image_alt_text'), + role: 'img', + ) %> + + +

<%= t('in_person_proofing.process.real_id_and_supporting_docs.heading') %>

+

<%= t('in_person_proofing.process.real_id_and_supporting_docs.info') %>

+
    + <% t('in_person_proofing.process.eipp_state_id_supporting_docs.info_list').each do |doc| %> +
  • <%= doc %>
  • + <% end %> +
@@ -93,14 +134,14 @@

<%= t('in_person_proofing.process.eipp_state_id_passport.heading') %>

-

<%= t('in_person_proofing.process.eipp_state_id_passport.info') %>

+

<%= t('in_person_proofing.process.eipp_state_id_passport.info') %>


- <%# B. State ID + Military ID %> + <%# B. State-issued ID + military ID %> @@ -117,14 +158,14 @@

<%= t('in_person_proofing.process.eipp_state_id_military_id.heading') %>

-

<%= t('in_person_proofing.process.eipp_state_id_military_id.info') %>

+

<%= t('in_person_proofing.process.eipp_state_id_military_id.info') %>


- <%# C. State ID + two supporting documents %> + <%# C. State-issued ID + two supporting documents %> diff --git a/app/views/users/piv_cac_authentication_setup/error.html.erb b/app/views/users/piv_cac_authentication_setup/error.html.erb index 89986f1413e..643a8f5c6fb 100644 --- a/app/views/users/piv_cac_authentication_setup/error.html.erb +++ b/app/views/users/piv_cac_authentication_setup/error.html.erb @@ -4,14 +4,13 @@ <%= @presenter.heading %> <% end %> -

+

<%= @presenter.description %>

-<%= render PageFooterComponent.new do %> - <% if MfaPolicy.new(current_user).two_factor_enabled? %> - <%= link_to t('links.cancel'), account_path %> - <% else %> - <%= link_to t('two_factor_authentication.choose_another_option'), authentication_methods_setup_path %> - <% end %> -<% end %> +<%= render ButtonComponent.new( + url: setup_piv_cac_url, + wide: true, + big: true, + ).with_content(t('forms.piv_cac_setup.try_again')) %> + diff --git a/app/views/users/piv_cac_login/error.html.erb b/app/views/users/piv_cac_login/error.html.erb index 58760a8fd33..a73fcde534d 100644 --- a/app/views/users/piv_cac_login/error.html.erb +++ b/app/views/users/piv_cac_login/error.html.erb @@ -8,8 +8,8 @@ <%= @presenter.description %>

-
- <%= link_to t('instructions.mfa.piv_cac.back_to_sign_in'), root_url, class: 'usa-button' %> -
- -<%= render 'shared/cancel', link: new_user_session_url %> +<%= render ButtonComponent.new( + url: new_user_session_url, + class: 'margin-top-3', + big: true, + ).with_content(t('instructions.mfa.piv_cac.back_to_sign_in')) %> diff --git a/app/views/users/piv_cac_login/new.html.erb b/app/views/users/piv_cac_login/new.html.erb index fa368fdeea9..a8e70eaf1cf 100644 --- a/app/views/users/piv_cac_login/new.html.erb +++ b/app/views/users/piv_cac_login/new.html.erb @@ -2,7 +2,7 @@ <%= render PageHeadingComponent.new.with_content(@presenter.heading) %> -

+

<%= @presenter.info %>

diff --git a/config/application.yml.default b/config/application.yml.default index dd44386b2ce..19d72a96212 100644 --- a/config/application.yml.default +++ b/config/application.yml.default @@ -311,6 +311,10 @@ short_term_phone_otp_max_attempts: 2 show_unsupported_passkey_platform_authentication_setup: false show_user_attribute_deprecation_warnings: false sign_in_recaptcha_score_threshold: 0.0 +sign_in_user_id_per_ip_attempt_window_exponential_factor: 1.1 +sign_in_user_id_per_ip_attempt_window_in_minutes: 720 +sign_in_user_id_per_ip_attempt_window_max_minutes: 43_200 +sign_in_user_id_per_ip_max_attempts: 50 sp_handoff_bounce_max_seconds: 2 sp_issuer_user_counts_report_configs: '[]' team_ada_email: '' diff --git a/config/locales/en.yml b/config/locales/en.yml index 0f7eca90b30..f2ad58da7ca 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -106,7 +106,7 @@ account.login.piv_cac: Sign in with your government employee ID account.login.tab_navigation: Account creation tabs account.navigation.add_authentication_apps: Add authentication apps account.navigation.add_email: Add email address -account.navigation.add_federal_id: Add federal employee ID +account.navigation.add_federal_id: Add your government employee ID account.navigation.add_phone_number: Add phone number account.navigation.add_platform_authenticator: Add face or touch unlock account.navigation.add_security_key: Add security key @@ -640,6 +640,11 @@ doc_auth.info.selfie_capture_status.face_close_to_border: Too close to the frame doc_auth.info.selfie_capture_status.face_not_found: Face not found doc_auth.info.selfie_capture_status.face_too_small: Face too small doc_auth.info.selfie_capture_status.too_many_faces: Too many faces +doc_auth.info.selfie_capture.action.capture: Take photo +doc_auth.info.selfie_capture.action.close: close +doc_auth.info.selfie_capture.action.retake: retake +doc_auth.info.selfie_capture.action.submit: Use this photo +doc_auth.info.selfie_capture.intro: Camera is on, ready for selfie doc_auth.info.ssn: We need your Social Security number to verify your name, date of birth and address. doc_auth.info.stepping_up_html: Verify your identity again to access this service. %{link_html} doc_auth.info.tag: Recommended @@ -858,12 +863,13 @@ forms.personal_key.instructions: Please confirm you have a copy of your personal forms.personal_key.required_checkbox: I saved my personal key in a safe place. forms.personal_key.title: Enter your personal key forms.phone.buttons.delete: Remove phone -forms.piv_cac_login.submit: Insert your PIV/CAC -forms.piv_cac_mfa.submit: Present PIV/CAC card +forms.piv_cac_login.submit: Insert PIV/CAC +forms.piv_cac_mfa.submit: Insert PIV/CAC forms.piv_cac_setup.nickname: PIV/CAC nickname forms.piv_cac_setup.no_thanks: No thanks forms.piv_cac_setup.piv_cac_intro_html: We’ll ask you to present your PIV/CAC card each time you sign in as part of two-factor authentication.

After clicking “Add PIV/CAC” your browser will prompt you for your PIV/CAC PIN and have you select a certificate. -forms.piv_cac_setup.submit: Add PIV/CAC card +forms.piv_cac_setup.submit: Insert PIV/CAC +forms.piv_cac_setup.try_again: Try again forms.registration.labels.email: Enter your email address forms.registration.labels.email_language: Select your email language preference forms.ssn.show: Show Social Security number @@ -917,16 +923,16 @@ headings.passwords.change: Change your password headings.passwords.confirm: Confirm your current password to continue headings.passwords.confirm_for_personal_key: Enter password and get a new personal key headings.passwords.forgot: Forgot your password? -headings.piv_cac_login.account_not_found: Your PIV/CAC is not connected to an account -headings.piv_cac_login.add: Set up your PIV or CAC as a two-factor authentication method so you can use it to sign in. -headings.piv_cac_login.new: Sign in with your PIV or CAC +headings.piv_cac_login.account_not_found: Your government employee ID is not connected to an account +headings.piv_cac_login.add: Use your smart card reader to set up your Personal Identity Verification (PIV) or Common Access Card (CAC). You can use any of these as a two-factor authentication method to sign in. +headings.piv_cac_login.new: Sign in with your government employee ID headings.piv_cac_login.success: You successfully set up PIV/CAC as an authentication method. headings.piv_cac_setup.already_associated: The PIV/CAC you presented is associated with another user. headings.piv_cac_setup.new: Use your PIV/CAC card to secure your account headings.piv_cac.certificate.bad: The PIV/CAC certificate you selected is invalid headings.piv_cac.certificate.expired: The PIV/CAC certificate you selected has expired headings.piv_cac.certificate.invalid: The PIV/CAC certificate you selected is invalid -headings.piv_cac.certificate.none: We cannot detect a certificate on your PIV/CAC card +headings.piv_cac.certificate.none: We cannot detect a certificate on your government employee ID headings.piv_cac.certificate.not_auth_cert: Please choose a different certificate for your PIV/CAC card headings.piv_cac.certificate.revoked: The PIV/CAC certificate you selected has been revoked from your card headings.piv_cac.certificate.unverified: The PIV/CAC certificate you selected is invalid @@ -1179,6 +1185,7 @@ in_person_proofing.body.barcode.cancel_link_text: Cancel your barcode in_person_proofing.body.barcode.close_window: You may now close this window. in_person_proofing.body.barcode.deadline: You must visit any participating Post Office by %{deadline}. in_person_proofing.body.barcode.deadline_restart: If you go after this deadline, your information will not be saved and you will need to restart the process. +in_person_proofing.body.barcode.eipp_tag: GSA Enhanced Pilot Barcode in_person_proofing.body.barcode.eipp_what_to_bring: 'Depending on your ID, you may need to show supporting documents. Review the following options carefully:' in_person_proofing.body.barcode.email_sent: We have sent your barcode and the information below to the email you used to sign in in_person_proofing.body.barcode.learn_more: Learn more about what to bring @@ -1284,9 +1291,10 @@ in_person_proofing.process.barcode.heading: Show your %{app_name} barcode in_person_proofing.process.barcode.info: The retail associate needs to scan your barcode at the top of this page. You can print this page or show it on your mobile device. in_person_proofing.process.eipp_bring_id_plus_documents.heading: 'Option 2: Bring a standard state-issued ID plus supporting documents' in_person_proofing.process.eipp_bring_id_plus_documents.info: 'You can present your standard driver’s license or state ID card, along with supporting documents from the following options A, B or C. You only need to pick ONE option:' +in_person_proofing.process.eipp_bring_id_with_current_address.heading: A. REAL ID with current address in_person_proofing.process.eipp_bring_id.heading: 'Option 1: Bring a REAL ID' in_person_proofing.process.eipp_bring_id.image_alt_text: Real ID -in_person_proofing.process.eipp_bring_id.info: 'If you present a Real State ID or Driver’s license, you don’t need to show supporting documents.' +in_person_proofing.process.eipp_bring_id.info: 'If you present a REAL ID driver’s license or ID card and the address on it is your current address, you don’t need to show supporting documents.' in_person_proofing.process.eipp_state_id_military_id.heading: B. State-issued ID + military ID in_person_proofing.process.eipp_state_id_military_id.image_alt_text: State ID and Military ID in_person_proofing.process.eipp_state_id_military_id.info: 'Present a standard driver’s license or state ID card, along with a military ID.' @@ -1304,6 +1312,9 @@ in_person_proofing.process.eipp_state_id_supporting_docs.info_list: - Vehicle registration card - Home insurance policy - Vehicle insurance policy +in_person_proofing.process.real_id_and_supporting_docs.heading: B. REAL ID + two supporting documents +in_person_proofing.process.real_id_and_supporting_docs.image_alt_text: REAL ID and two documents +in_person_proofing.process.real_id_and_supporting_docs.info: 'If the address on your REAL ID is not your current address, present a REAL ID, along with two supporting documents from this list:' in_person_proofing.process.state_id.heading: Show your State Driver’s License or State Non-Driver’s Identification Card in_person_proofing.process.state_id.heading_eipp: Show your ID and supporting documents in_person_proofing.process.state_id.info: This must not be expired. We do not currently accept any other forms of identification, such as passports and military IDs. @@ -1320,17 +1331,17 @@ instructions.forgot_password.close_window: You can close this browser window onc instructions.go_back_to_mobile_app: To continue, please go back to the %{friendly_name} app and sign in. instructions.mfa.authenticator.confirm_code_html: Enter the code from your authenticator app. If you have several accounts set up in your app, enter the code corresponding to %{app_name_html}. instructions.mfa.authenticator.manual_entry: Or enter this code manually into your authentication app -instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} with your email address and password. Then add your PIV/CAC to your account.

Don’t have a %{app_name} account? %{create_account}

' +instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} with your email address and password. Then insert your PIV/CAC into a smart card reader to add to your account.

Don’t have a %{app_name} account? %{create_account}

' instructions.mfa.piv_cac.add_from_sign_in_html: 'Instructions: Insert your PIV or CAC on “ADD PIV/CAC”. You’ll need to choose a certificate (the right one likely has your name of it) and enter your PIN (your PIN was created when you set up your PIV/CAC).' instructions.mfa.piv_cac.already_associated_html: Please choose a certificate from a different PIV/CAC, contact your administrator to ensure your PIV/CAC is up to date. If you think this is an error, %{try_again_html}. instructions.mfa.piv_cac.back_to_sign_in: Go back to sign in -instructions.mfa.piv_cac.confirm_piv_cac: Present the PIV/CAC that you associated with your account. -instructions.mfa.piv_cac.did_not_work_html: Please %{please_try_again_html}. If this problem continues, contact your agency administrator. +instructions.mfa.piv_cac.confirm_piv_cac: Insert your PIV/CAC that you associated with your account into a smart card reader. +instructions.mfa.piv_cac.did_not_work_html: Please make sure your PIV/CAC is properly inserted into your smart card reader and %{please_try_again_html}. If this problem continues, contact your agency administrator. instructions.mfa.piv_cac.http_failure: The server took too long to respond. Please try again. -instructions.mfa.piv_cac.no_certificate_html: Please make sure your PIV/CAC is connected and %{try_again_html}. If this problem continues, contact your agency administrator. +instructions.mfa.piv_cac.no_certificate_html: Please make sure your PIV/CAC is properly inserted into your smart card reader and %{try_again_html}. If this problem continues, contact your agency administrator. instructions.mfa.piv_cac.not_auth_cert_html: The certificate you selected is invalid for this account. Please %{please_try_again_html} with a different certificate. If this problem continues, contact your agency administrator. instructions.mfa.piv_cac.please_try_again: try again -instructions.mfa.piv_cac.sign_in_html: Make sure you have a %{app_name} account and you’ve set up PIV/CAC as a two-factor authentication method. +instructions.mfa.piv_cac.sign_in: Make sure you have a %{app_name} account and you’ve set up your Personal Identity Verification (PIV) or Common Access Card (CAC) as a two-factor authentication method. instructions.mfa.piv_cac.step_1: Give it a nickname instructions.mfa.piv_cac.step_1_info: If you add more than one PIV/CAC, you’ll know which one’s which. instructions.mfa.piv_cac.step_2: Insert your PIV/CAC into your card reader @@ -1409,7 +1420,7 @@ notices.forgot_password.no_email_sent_explanation_start: Didn’t receive an ema notices.forgot_password.resend_email_success: We sent another password reset email. notices.password_changed: You changed your password. notices.phone_confirmed: A phone was added to your account. -notices.piv_cac_configured: A PIV/CAC card was added to your account. +notices.piv_cac_configured: A government employee ID was added to your account. notices.privacy.privacy_act_statement: Privacy Act Statement notices.privacy.security_and_privacy_practices: Security Practices and Privacy Act Statement notices.resend_confirmation_email.success: We sent another confirmation email. @@ -1586,11 +1597,11 @@ titles.openid_connect.logout: OpenID Connect Logout titles.passwords.change: Change the password for your account titles.passwords.forgot: Reset password titles.personal_key: Just in case -titles.piv_cac_login.add: Add your PIV or CAC +titles.piv_cac_login.add: Add your government employee ID titles.piv_cac_login.new: Use your PIV/CAC to sign in to your account titles.piv_cac_setup.new: Use your PIV/CAC card to secure your account titles.piv_cac_setup.upsell: Add your government employee ID for a faster, more secure sign in -titles.present_piv_cac: Present your PIV/CAC +titles.present_piv_cac: Insert your government employee ID titles.present_webauthn: Connect your hardware security key titles.reactivate_account: Reactivate your account titles.registrations.new: Create your account @@ -1699,7 +1710,7 @@ two_factor_authentication.phone_verification.troubleshooting.change_number: Use two_factor_authentication.phone_verification.troubleshooting.code_not_received: I didn’t receive my one-time code two_factor_authentication.phone.delete.failure: Unable to remove your phone. two_factor_authentication.phone.delete.success: Your phone has been removed. -two_factor_authentication.piv_cac_header_text: Present your PIV/CAC +two_factor_authentication.piv_cac_header_text: Insert your government employee ID two_factor_authentication.piv_cac_upsell.add_piv: Add PIV/CAC card two_factor_authentication.piv_cac_upsell.choose_other_method: Choose other methods instead two_factor_authentication.piv_cac_upsell.explain: This will improve your account security and let you skip entering your email and password when signing in. @@ -1778,10 +1789,10 @@ user_mailer.account_reset_cancel.intro_html: This email confirms you have cancel user_mailer.account_reset_cancel.subject: Request canceled user_mailer.account_reset_complete.intro_html: This email confirms you have deleted your %{app_name_html} account. user_mailer.account_reset_complete.subject: Account deleted -user_mailer.account_reset_granted.button: Yes, continue deleting +user_mailer.account_reset_granted.button: Confirm account deletion user_mailer.account_reset_granted.cancel_link_text: please cancel user_mailer.account_reset_granted.help_html: If you don’t want to delete your account, %{cancel_account_reset_html}. -user_mailer.account_reset_granted.intro_html: Your waiting period of %{waiting_period} has ended. Please complete step 2 of the process.

If you’ve been unable to locate your authentication methods, select “confirm deletion” to delete your %{app_name} account.

In the future, if you need to access participating government websites who use %{app_name}, you can create a new %{app_name} account using the same email address after your account is deleted.

+user_mailer.account_reset_granted.intro_html: Your waiting period of %{waiting_period} has ended. Please complete step 2 of the process.

If you’ve been unable to locate your authentication methods, select “confirm account deletion” to delete your %{app_name} account.

In the future, if you need to access participating government websites who use %{app_name}, you can create a new %{app_name} account using the same email address after your account is deleted.

user_mailer.account_reset_granted.subject: Delete your %{app_name} account user_mailer.account_reset_request.cancel: Don’t want to delete your account? Sign in to your %{app_name} account to cancel. user_mailer.account_reset_request.header: Your account will be deleted in %{interval} diff --git a/config/locales/es.yml b/config/locales/es.yml index bbde4054179..7418fda7a19 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -106,7 +106,7 @@ account.login.piv_cac: Inicie sesión con su identificación de empleado del gob account.login.tab_navigation: Pestañas para creación de cuentas account.navigation.add_authentication_apps: Agregar aplicaciones de autenticación account.navigation.add_email: Agregar dirección de correo electrónico -account.navigation.add_federal_id: Agregar identificación de empleado federal +account.navigation.add_federal_id: Agregue su identificación de empleado del gobierno. account.navigation.add_phone_number: Agregar número de teléfono account.navigation.add_platform_authenticator: Agregar desbloqueo facial o táctil account.navigation.add_security_key: Agregar clave de seguridad @@ -651,6 +651,11 @@ doc_auth.info.selfie_capture_status.face_close_to_border: Demasiado cerca del ma doc_auth.info.selfie_capture_status.face_not_found: No se detectó el rostro doc_auth.info.selfie_capture_status.face_too_small: Rostro demasiado pequeño doc_auth.info.selfie_capture_status.too_many_faces: Demasiados rostros +doc_auth.info.selfie_capture.action.capture: Tomar la foto +doc_auth.info.selfie_capture.action.close: Cerrar +doc_auth.info.selfie_capture.action.retake: Volver a tomar foto +doc_auth.info.selfie_capture.action.submit: Usar esta foto +doc_auth.info.selfie_capture.intro: Cámara encendida, lista para tomar selfie doc_auth.info.ssn: Necesitamos su número de Seguro Social para verificar su nombre, fecha de nacimiento y dirección. doc_auth.info.stepping_up_html: Verifique de nuevo su identidad para acceder a este servicio. %{link_html} doc_auth.info.tag: Recomendado @@ -869,12 +874,13 @@ forms.personal_key.instructions: Confirme que tiene una copia de su clave person forms.personal_key.required_checkbox: Guardé mi clave personal en un lugar seguro. forms.personal_key.title: Ingrese su clave personal forms.phone.buttons.delete: Eliminar teléfono -forms.piv_cac_login.submit: Inserte su tarjeta PIV o CAC -forms.piv_cac_mfa.submit: Presentar la tarjeta PIV o CAC +forms.piv_cac_login.submit: Inserte su tarjeta PIV o CAC. +forms.piv_cac_mfa.submit: Inserte su tarjeta PIV o CAC. forms.piv_cac_setup.nickname: Alias de la tarjeta PIV o CAC forms.piv_cac_setup.no_thanks: No, gracias forms.piv_cac_setup.piv_cac_intro_html: Le pediremos que presente su tarjeta PIV o CAC cada vez que inicie sesión como parte de la autenticación de dos factores.

Después de hacer clic en “Agregar tarjeta PIV o CAC”, su navegador le pedirá el PIN de su tarjeta PIV o CAC y que seleccione un certificado. -forms.piv_cac_setup.submit: Agregar tarjeta PIV o CAC +forms.piv_cac_setup.submit: Inserte su tarjeta PIV o CAC. +forms.piv_cac_setup.try_again: Vuelva a intentarlo forms.registration.labels.email: Ingrese su dirección de correo electrónico forms.registration.labels.email_language: Seleccione su preferencia de idioma del correo electrónico forms.ssn.show: Mostrar número de Seguro Social @@ -928,16 +934,16 @@ headings.passwords.change: Cambie su contraseña headings.passwords.confirm: Confirme su contraseña actual para continuar headings.passwords.confirm_for_personal_key: Introduzca la contraseña y obtenga una clave personal nueva headings.passwords.forgot: '¿Olvidó su contraseña?' -headings.piv_cac_login.account_not_found: Su tarjeta PIV o CAC no está conectada a una cuenta -headings.piv_cac_login.add: Configure su tarjeta PIV o CAC como un método de autenticación de dos factores para que pueda usarla para iniciar sesión. -headings.piv_cac_login.new: Inicie sesión con su tarjeta PIV o CAC +headings.piv_cac_login.account_not_found: Su tarjeta de empleado del gobierno no está conectada a una cuenta. +headings.piv_cac_login.add: Use su lector de tarjetas inteligente para configurar su tarjeta de verificación de identidad personal (PIV) o su tarjeta de acceso común (CAC). Puede usar cualquiera de esas dos tarjetas como un método de autenticación de dos factores para iniciar sesión. +headings.piv_cac_login.new: Inicie sesión con su identificación de empleado del gobierno. headings.piv_cac_login.success: Logró configurar su tarjeta PIV o CAC como un método de autenticación. headings.piv_cac_setup.already_associated: La tarjeta PIV o CAC que presentó está asociada con otro usuario. headings.piv_cac_setup.new: Use su tarjeta PIV o CAC para proteger su cuenta headings.piv_cac.certificate.bad: El certificado de la tarjeta PIV o CAC que seleccionó no es válido headings.piv_cac.certificate.expired: El certificado de la tarjeta PIV o CAC que seleccionó ya venció headings.piv_cac.certificate.invalid: El certificado de la tarjeta PIV o CAC que seleccionó no es válido -headings.piv_cac.certificate.none: No podemos detectar un certificado en su tarjeta PIV o CAC +headings.piv_cac.certificate.none: No podemos detectar un certificado en su tarjeta de identificación de empleado del gobierno. headings.piv_cac.certificate.not_auth_cert: Elija un certificado diferente para su tarjeta PIV o CAC headings.piv_cac.certificate.revoked: El certificado de la tarjeta PIV o CAC que seleccionó fue revocado para su tarjeta headings.piv_cac.certificate.unverified: El certificado de la tarjeta PIV o CAC que seleccionó no es válido @@ -1190,6 +1196,7 @@ in_person_proofing.body.barcode.cancel_link_text: Cancele su código de barras in_person_proofing.body.barcode.close_window: Ya puede cerrar esta ventana. in_person_proofing.body.barcode.deadline: Debe acudir a cualquier oficina de correos participante antes del %{deadline} in_person_proofing.body.barcode.deadline_restart: Si vence el plazo, su información no se guardará y tendrá que reiniciar el proceso. +in_person_proofing.body.barcode.eipp_tag: Código de barras piloto mejorado GSA in_person_proofing.body.barcode.eipp_what_to_bring: 'Según el tipo de identificación que tenga, es posible que deba presentar documentos comprobatorios. Lea con atención las opciones siguientes:' in_person_proofing.body.barcode.email_sent: Enviamos el código de barras y la información más abajo al correo electrónico que usó para iniciar sesión in_person_proofing.body.barcode.learn_more: Obtenga más información sobre lo que debe llevar @@ -1295,9 +1302,10 @@ in_person_proofing.process.barcode.heading: Muestre su código de barras de %{ap in_person_proofing.process.barcode.info: El empleado debe escanear el código de barras que aparece en la parte superior de esta página. Puede imprimir esta página o mostrarla en su dispositivo móvil. in_person_proofing.process.eipp_bring_id_plus_documents.heading: 'Opción 2: Llevar una identificación estatal estándar emitida por el estado, junto con los documentos comprobatorios' in_person_proofing.process.eipp_bring_id_plus_documents.info: 'Puede presentar su licencia de conducir o identificación estatal estándar, junto con los documentos comprobatorios de las opciones A, B o C siguientes. Solo debe escoger UNA opción:' +in_person_proofing.process.eipp_bring_id_with_current_address.heading: A. REAL ID con dirección actual in_person_proofing.process.eipp_bring_id.heading: 'Opción 1: Llevar una REAL ID' in_person_proofing.process.eipp_bring_id.image_alt_text: Real ID -in_person_proofing.process.eipp_bring_id.info: Si presenta una Real ID estatal o licencia de conducir auténtica, no necesita mostrar documentos comprobatorios. +in_person_proofing.process.eipp_bring_id.info: Si presenta una licencia de conducir o una tarjeta de identificación REAL ID con su dirección actual, no necesita mostrar documentos comprobatorios. in_person_proofing.process.eipp_state_id_military_id.heading: B. Identificación emitida por el estado + identificación militar in_person_proofing.process.eipp_state_id_military_id.image_alt_text: Identificación estatal e identificación militar in_person_proofing.process.eipp_state_id_military_id.info: Presente una licencia de conducir o una tarjeta de identificación estatal estándar, junto con una identificación militar. @@ -1315,6 +1323,9 @@ in_person_proofing.process.eipp_state_id_supporting_docs.info_list: - Tarjeta de registro de su vehículo - Póliza de seguro de su vivienda - Póliza de seguro de su vehículo +in_person_proofing.process.real_id_and_supporting_docs.heading: B. REAL ID + dos documentos comprobatorios +in_person_proofing.process.real_id_and_supporting_docs.image_alt_text: REAL ID y dos documentos +in_person_proofing.process.real_id_and_supporting_docs.info: 'Si la dirección que figura en su REAL ID no es su dirección actual, presente un REAL ID, junto con dos documentos comprobatorios de esta lista:' in_person_proofing.process.state_id.heading: Muestre su licencia de conducir estatal o su tarjeta de identificación estatal que no sea una licencia de conducir in_person_proofing.process.state_id.heading_eipp: Muestre su identificación y los documentos comprobatorios in_person_proofing.process.state_id.info: No debe estar vencida. Actualmente no aceptamos otras formas de identificación, como pasaportes o identificaciones militares. @@ -1331,17 +1342,17 @@ instructions.forgot_password.close_window: Puede cerrar esta ventana del navegad instructions.go_back_to_mobile_app: Para continuar, vuelva a la aplicación %{friendly_name} e inicie sesión. instructions.mfa.authenticator.confirm_code_html: Ingrese el código de su aplicación de autenticación. Si tiene varias cuentas configuradas en su aplicación, ingrese el código correspondiente a %{app_name_html}. instructions.mfa.authenticator.manual_entry: O ingrese este código manualmente en su aplicación de autenticación -instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} con su dirección de correo electrónico y su contraseña. Luego, agregue su tarjeta PIV o CAC a su cuenta.

¿No tiene una cuenta de %{app_name}? %{create_account}

' +instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} con su dirección de correo electrónico y su contraseña. Luego, agregue su tarjeta PIV o CAC a su cuenta.

¿No tiene una cuenta de %{app_name}? %{create_account}

' instructions.mfa.piv_cac.add_from_sign_in_html: ' Instrucciones: Inserte su tarjeta PIV o CAC en “AGREGAR TARJETA PIV O CAC” . Tendrá que elegir un certificado (es probable que el correcto tenga su nombre) e ingrese su PIN (su PIN se creó cuando configuró su tarjeta PIV o CAC).' instructions.mfa.piv_cac.already_associated_html: Elija un certificado de una tarjeta PIV o CAC diferente y contacte con el administrador para confirmar que su tarjeta PIV o CAC está al día. Si cree que se trata de un error, %{try_again_html}. instructions.mfa.piv_cac.back_to_sign_in: Vuelva a iniciar sesión -instructions.mfa.piv_cac.confirm_piv_cac: Presente la tarjeta PIV o CAC que asoció con su cuenta. -instructions.mfa.piv_cac.did_not_work_html: '%{please_try_again_html}. Contacte con el administrador de su agencia si persiste este problema.' +instructions.mfa.piv_cac.confirm_piv_cac: Inserte la tarjeta PIV o CAC asociada con su cuenta en un lector de tarjetas inteligente. +instructions.mfa.piv_cac.did_not_work_html: 'Asegúrese de que su tarjeta PIV o CAC esté insertada correctamente en el lector de tarjetas inteligente e %{please_try_again_html}. Contacte con el administrador de su agencia si persiste este problema.' instructions.mfa.piv_cac.http_failure: El servidor tardó demasiado en responder. Vuelva a intentarlo. -instructions.mfa.piv_cac.no_certificate_html: Asegúrese de que su tarjeta PIV o CAC esté conectada y %{try_again_html}. Contacte con el administrador de su agencia si persiste este problema. +instructions.mfa.piv_cac.no_certificate_html: Asegúrese de que su tarjeta PIV o CAC esté insertada correctamente en el lector de tarjetas inteligente e %{try_again_html}. Contacte con el administrador de su agencia si persiste este problema. instructions.mfa.piv_cac.not_auth_cert_html: El certificado que seleccionó no es válido para esta cuenta. %{please_try_again_html} con un certificado diferente. Contacte con el administrador de su agencia si persiste este problema. instructions.mfa.piv_cac.please_try_again: vuelva a intentarlo -instructions.mfa.piv_cac.sign_in_html: Asegúrese de que tiene una cuenta de %{app_name} y de que configuró una tarjeta PIV o CAC como método de autenticación de dos factores. +instructions.mfa.piv_cac.sign_in: Asegúrese de tener una cuenta de %{app_name} y de tener configurada una tarjeta de verificación de identidad personal (PIV) o una tarjeta de acceso común (CAC) como método de autenticación de dos factores. instructions.mfa.piv_cac.step_1: Asígnele un alias. instructions.mfa.piv_cac.step_1_info: Si agrega más de una tarjeta PIV o CAC, podrá distinguirlas. instructions.mfa.piv_cac.step_2: Inserte su tarjeta PIV o CAC en su lector de tarjetas. @@ -1420,7 +1431,7 @@ notices.forgot_password.no_email_sent_explanation_start: '¿No recibió un corre notices.forgot_password.resend_email_success: Enviamos otro correo electrónico para restablecer la contraseña. notices.password_changed: Cambió su contraseña. notices.phone_confirmed: Se agregó un teléfono a su cuenta. -notices.piv_cac_configured: Se agregó una tarjeta PIV o CAC a su cuenta. +notices.piv_cac_configured: Agregue su identificación de empleado del gobierno. notices.privacy.privacy_act_statement: Declaración de privacidad notices.privacy.security_and_privacy_practices: Prácticas de seguridad y declaración de privacidad notices.resend_confirmation_email.success: Enviamos otro correo electrónico de confirmación. @@ -1598,11 +1609,11 @@ titles.openid_connect.logout: Cierre de sesión de OpenID Connect titles.passwords.change: Cambie la contraseña de su cuenta titles.passwords.forgot: Restablecer la contraseña titles.personal_key: Por si acaso -titles.piv_cac_login.add: Agregue su tarjeta PIV o CAC +titles.piv_cac_login.add: Agregue su identificación de empleado del gobierno titles.piv_cac_login.new: Use su tarjeta PIV o CAC para iniciar sesión en su cuenta titles.piv_cac_setup.new: Use su tarjeta PIV o CAC para proteger su cuenta titles.piv_cac_setup.upsell: Agregue su identificación de empleado del gobierno para un inicio de sesión más rápido y más seguro. -titles.present_piv_cac: Presente su tarjeta PIV o CAC +titles.present_piv_cac: Inserte su identificación de empleado del gobierno. titles.present_webauthn: Conecte su clave de seguridad de hardware titles.reactivate_account: Reactive su cuenta titles.registrations.new: Cree su cuenta @@ -1711,7 +1722,7 @@ two_factor_authentication.phone_verification.troubleshooting.change_number: Use two_factor_authentication.phone_verification.troubleshooting.code_not_received: No recibí mi código de un solo uso two_factor_authentication.phone.delete.failure: No se puede eliminar su teléfono. two_factor_authentication.phone.delete.success: Su teléfono fue eliminado. -two_factor_authentication.piv_cac_header_text: Presente su tarjeta PIV o CAC +two_factor_authentication.piv_cac_header_text: Inserte su identificación de empleado del gobierno two_factor_authentication.piv_cac_upsell.add_piv: Agregar tarjeta PIV/CAC two_factor_authentication.piv_cac_upsell.choose_other_method: Elegir otros métodos two_factor_authentication.piv_cac_upsell.explain: Esto hará que su cuenta sea más segura y no tendrá que ingresar su correo electrónico ni su contraseña cuando inicie sesión. @@ -1790,10 +1801,10 @@ user_mailer.account_reset_cancel.intro_html: Este correo electrónico confirma q user_mailer.account_reset_cancel.subject: Solicitud cancelada user_mailer.account_reset_complete.intro_html: Este correo electrónico confirma que usted eliminó su cuenta de %{app_name_html}. user_mailer.account_reset_complete.subject: Cuenta eliminada -user_mailer.account_reset_granted.button: Sí, continuar eliminando +user_mailer.account_reset_granted.button: Confirmar la eliminación de la cuenta user_mailer.account_reset_granted.cancel_link_text: cancele user_mailer.account_reset_granted.help_html: Si no desea eliminar su cuenta, %{cancel_account_reset_html}. -user_mailer.account_reset_granted.intro_html: Su período de espera de %{waiting_period} finalizó. Complete el paso 2 del proceso.

Si no ha podido localizar sus métodos de autenticación, seleccione “confirmar eliminación” para eliminar su cuenta de %{app_name}.

En el futuro, si necesita acceder a los sitios web gubernamentales participantes que utilizan %{app_name}, puede crear una nueva cuenta %{app_name} con la misma dirección de correo electrónico después de que se elimine su cuenta.

+user_mailer.account_reset_granted.intro_html: Su período de espera de %{waiting_period} finalizó. Complete el paso 2 del proceso.

Si no ha podido localizar sus métodos de autenticación, seleccione “Confirmar la eliminación de la cuenta” para eliminar su cuenta de %{app_name}.

En el futuro, si necesita acceder a los sitios web gubernamentales participantes que utilizan %{app_name}, puede crear una nueva cuenta %{app_name} con la misma dirección de correo electrónico después de que se elimine su cuenta.

user_mailer.account_reset_granted.subject: Elimine su cuenta de %{app_name} user_mailer.account_reset_request.cancel: '¿No desea eliminar su cuenta? Inicie sesión en su cuenta de %{app_name} para cancelar.' user_mailer.account_reset_request.header: Su cuenta será eliminada en %{interval} diff --git a/config/locales/fr.yml b/config/locales/fr.yml index a44f4660adc..79c1070e394 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -106,7 +106,7 @@ account.login.piv_cac: Connectez-vous avec votre identifiant d’employé. account.login.tab_navigation: Onglets de création de compte account.navigation.add_authentication_apps: Ajouter des applis d’authentification account.navigation.add_email: Ajouter une adresse e-mail -account.navigation.add_federal_id: Ajouter un identifiant d’employé fédéral +account.navigation.add_federal_id: Ajouter votre carte d’employé fédéral account.navigation.add_phone_number: Ajouter un numéro de téléphone account.navigation.add_platform_authenticator: Ajouter le déverrouillage facial ou tactile account.navigation.add_security_key: Ajouter une clé de sécurité @@ -640,6 +640,11 @@ doc_auth.info.selfie_capture_status.face_close_to_border: Trop près du cadre doc_auth.info.selfie_capture_status.face_not_found: Visage non trouvé doc_auth.info.selfie_capture_status.face_too_small: Visage trop petit doc_auth.info.selfie_capture_status.too_many_faces: Trop de visages +doc_auth.info.selfie_capture.action.capture: Prendre une photo +doc_auth.info.selfie_capture.action.close: éteindre +doc_auth.info.selfie_capture.action.retake: nouvelle photo +doc_auth.info.selfie_capture.action.submit: Utiliser cette photo +doc_auth.info.selfie_capture.intro: Caméra prête à prendre la photo doc_auth.info.ssn: Nous avons besoin de votre numéro de sécurité sociale pour confirmer vos nom, date de naissance et adresse. doc_auth.info.stepping_up_html: Veuillez confirmer à nouveau votre identité pour accéder à ce service. %{link_html} doc_auth.info.tag: Recommandation @@ -858,12 +863,13 @@ forms.personal_key.instructions: Veuillez confirmer que vous avez une copie de v forms.personal_key.required_checkbox: J’ai conservé ma clé personnelle en lieu sûr. forms.personal_key.title: Saisir votre clé personnelle forms.phone.buttons.delete: Supprimer le numéro de téléphone -forms.piv_cac_login.submit: Insérez votre PIV/CAC -forms.piv_cac_mfa.submit: Présentez la carte PIV/CAC +forms.piv_cac_login.submit: Insérer la carte PIV/CAC +forms.piv_cac_mfa.submit: Insérer la carte PIV/CAC forms.piv_cac_setup.nickname: Surnom de la carte PIV/CAC forms.piv_cac_setup.no_thanks: Non, merci forms.piv_cac_setup.piv_cac_intro_html: Nous vous demanderons de présenter votre carte PIV/CAC chaque fois que vous vous connecterez sur dans le cadre de l’authentification à deux facteurs.

Après avoir cliqué sur « Ajouter une carte PIV/CAC », votre navigateur vous demandera de saisir le NIP de votre PIV/CAC et de choisir un certificat. -forms.piv_cac_setup.submit: Ajouter une carte PIV/CAC +forms.piv_cac_setup.submit: Insérer la carte PIV/CAC +forms.piv_cac_setup.try_again: Réessayer forms.registration.labels.email: Saisissez votre adresse e-mail forms.registration.labels.email_language: Sélectionnez votre langue de préférence pour les e-mails forms.ssn.show: Afficher le numéro de sécurité sociale @@ -917,16 +923,16 @@ headings.passwords.change: Changer votre mot de passe headings.passwords.confirm: Confirmer votre mot de passe actuel pour continuer headings.passwords.confirm_for_personal_key: Saisir le mot de passe et obtenir une nouvelle clé personnelle headings.passwords.forgot: Mot de passe oublié ? -headings.piv_cac_login.account_not_found: Votre carte PIV/CAC n’est pas connectée à un compte -headings.piv_cac_login.add: Configurer votre PIV ou votre CAC comme méthode d’authentification à deux facteurs pour pouvoir l’utiliser pour vous connecter. -headings.piv_cac_login.new: Vous connecter avec votre PIV/CAC +headings.piv_cac_login.account_not_found: Votre carte d’employé fédéral n’est pas associée à un compte +headings.piv_cac_login.add: Utilisez votre lecteur de carte à puce pour configurer votre carte PIV (personal identity verification, vérification d’identité personnelle) ou CAC (common access card, carte d’accès commun). Vous pouvez utiliser l’une ou l’autre carte comme méthode d’authentification à deux facteurs pour vous connecter. +headings.piv_cac_login.new: Insérer votre carte d’employé fédéral headings.piv_cac_login.success: Votre carte PIV/CAC a bien été configurée comme méthode d’authentification. headings.piv_cac_setup.already_associated: La carte PIV/CAC que vous avez présentée est associée à un autre utilisateur. headings.piv_cac_setup.new: Utilisez votre carte PIV/CAC pour sécuriser votre compte. headings.piv_cac.certificate.bad: Le certificat PIV/CAC sélectionné n’est pas valide. headings.piv_cac.certificate.expired: Le certificat PIV/CAC sélectionné a expiré. headings.piv_cac.certificate.invalid: Le certificat PIV/CAC sélectionné n’est pas valide. -headings.piv_cac.certificate.none: Nous ne pouvons pas détecter de certificat sur votre carte PIV/CAC. +headings.piv_cac.certificate.none: Nous ne détectons pas de certificat sur votre carte d’employé fédéral. headings.piv_cac.certificate.not_auth_cert: Veuillez choisir un autre certificat pour votre carte PIV/CAC. headings.piv_cac.certificate.revoked: Le certificat PIV/CAC sélectionné a été révoqué de votre carte. headings.piv_cac.certificate.unverified: Le certificat PIV/CAC sélectionné n’est pas valide. @@ -1179,6 +1185,7 @@ in_person_proofing.body.barcode.cancel_link_text: Annuler votre code-barres in_person_proofing.body.barcode.close_window: Vous pouvez maintenant fermer cette fenêtre in_person_proofing.body.barcode.deadline: Vous devez vous rendre dans un bureau de poste participant avant le %{deadline} in_person_proofing.body.barcode.deadline_restart: Si vous y allez après cette date limite, vos informations ne seront pas sauvegardées et vous devrez recommencer le processus. +in_person_proofing.body.barcode.eipp_tag: Code-barres pilote amélioré de la GSA in_person_proofing.body.barcode.eipp_what_to_bring: 'Selon la pièce d’identité dont vous disposez, il pourra vous être demandé de présenter des documents complémentaires. Étudiez attentivement les options suivantes:' in_person_proofing.body.barcode.email_sent: Nous avons envoyé votre code-barre et les informations ci-dessous à l’adresse e-mail que vous avez utilisée pour vous connecter in_person_proofing.body.barcode.learn_more: En savoir davantage sur ce qu’il faut apporter. @@ -1284,9 +1291,10 @@ in_person_proofing.process.barcode.heading: Montrez votre code-barres %{app_name in_person_proofing.process.barcode.info: Le préposé doit scanner votre code-barres en haut de cette page. Vous pouvez imprimer cette page ou la montrer sur votre appareil mobile. in_person_proofing.process.eipp_bring_id_plus_documents.heading: 'Option 2: Apporter une pièce d’identité délivrée par l’État ainsi que des documents complémentaires' in_person_proofing.process.eipp_bring_id_plus_documents.info: 'Vous pouvez présenter votre permis de conduire standard ou une carte d’identité délivrée par un État, en l’accompagnant de documents complémentaires parmi ceux figurant aux options A, B ou C. UNE seule option doit être choisie:' +in_person_proofing.process.eipp_bring_id_with_current_address.heading: A. REAL ID avec adresse actuelle in_person_proofing.process.eipp_bring_id.heading: 'Option 1: Apporter une pièce d’identité REAL ID' in_person_proofing.process.eipp_bring_id.image_alt_text: Real ID -in_person_proofing.process.eipp_bring_id.info: Si vous présentez une carte d’identité ou un permis de conduire d’un État de type Real ID, vous n’avez pas besoin de présenter des documents complémentaires. +in_person_proofing.process.eipp_bring_id.info: Si vous présentez un permis de conduire ou une carte d’identité REAL ID et que l’adresse y figurant est votre adresse actuelle, il est inutile de produire des documents complémentaires. in_person_proofing.process.eipp_state_id_military_id.heading: B. Pièce d’identité délivrée par l’État + carte d’identité militaire in_person_proofing.process.eipp_state_id_military_id.image_alt_text: Pièce d’identité d’un État et carte d’identité militaire in_person_proofing.process.eipp_state_id_military_id.info: Présenter un permis de conduire standard ou une carte d’identité délivrée par un État, accompagné d’une carte d’identité militaire. @@ -1304,6 +1312,9 @@ in_person_proofing.process.eipp_state_id_supporting_docs.info_list: - Carte d’immatriculation d’un véhicule - Attestation d’assurance habitation - Attestation d’assurance automobile/deux roues +in_person_proofing.process.real_id_and_supporting_docs.heading: B. REAL ID + de deux documents complémentaires +in_person_proofing.process.real_id_and_supporting_docs.image_alt_text: REAL ID et deux documents +in_person_proofing.process.real_id_and_supporting_docs.info: 'Si l’adresse figurant sur votre REAL ID n’est pas votre adresse actuelle, veuillez présenter le document REAL ID accompagné de deux documents complémentaires parmi ceux de la liste ci-dessous :' in_person_proofing.process.state_id.heading: Présentez votre permis de conduire ou votre carte d’identité de l’État in_person_proofing.process.state_id.heading_eipp: Présenter votre pièce d’identité et les documents complémentaires in_person_proofing.process.state_id.info: Ce document ne doit pas être périmé. Nous n’acceptons actuellement aucune autre pièce d’identité, comme les passeports et les cartes d’identité militaires. @@ -1320,17 +1331,17 @@ instructions.forgot_password.close_window: Vous pourrez fermer cette fenêtre de instructions.go_back_to_mobile_app: Pour continuer, veuillez retourner à l’appli %{friendly_name} et vous connecter. instructions.mfa.authenticator.confirm_code_html: Saisissez le code à partir de votre appli d’authentification. Si vous avez plusieurs comptes configurés dans votre appli, saisissez le code correspondant à %{app_name_html}. instructions.mfa.authenticator.manual_entry: Ou saisissez ce code manuellement dans votre appli d’authentification -instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} avec votre adresse e-mail et votre mot de passe. Ensuite, ajoutez votre carte PIV/CAC à votre compte.

Vous n’avez pas de compte %{app_name}? %{create_account}

' +instructions.mfa.piv_cac.account_not_found_html: '

%{sign_in} à l’aide de votre adresse e-mail et de votre mot de passe. Introduisez ensuite la carte PIV/CAC dans un lecteur de carte à puce pour l’ajouter à votre compte.

Vous n’avez pas de compte %{app_name}? %{create_account}

' instructions.mfa.piv_cac.add_from_sign_in_html: ' Instructions : Insérez votre carte PIV ou CAC dans AJOUTER PIV/CAC. Vous devrez choisir un certificat (le bon a probablement le nom que vous lui avez donné) et saisir votre NIP (votre NIP a été créé lors de la configuration de votre carte PIV/CAC).' instructions.mfa.piv_cac.already_associated_html: Veuillez choisir un certificat associé à une autre carte PIV/CAC ; contactez votre administrateur afin de vérifier que votre carte PIV/CAC est bien à jour. Si vous pensez qu’il s’agit d’une erreur, veuillez %{try_again_html}. instructions.mfa.piv_cac.back_to_sign_in: Retourner vous connecter -instructions.mfa.piv_cac.confirm_piv_cac: Veuillez présenter la carte PIV/CAC que vous avez associée à votre compte. -instructions.mfa.piv_cac.did_not_work_html: Veuillez %{please_try_again_html}. Si ce problème persiste, contactez l’administrateur de votre organisme. +instructions.mfa.piv_cac.confirm_piv_cac: Introduisez la carte PIV/CAC que vous avez associée à votre compte dans un lecteur de carte à puce. +instructions.mfa.piv_cac.did_not_work_html: Veuillez vous assurer que votre carte PIV/CAC est correctement introduite dans votre lecteur de carte à puce et %{please_try_again_html}. Si ce problème persiste, contactez l’administrateur de votre organisme. instructions.mfa.piv_cac.http_failure: Le serveur a mis trop de temps à répondre. Veuillez réessayer. -instructions.mfa.piv_cac.no_certificate_html: Veuillez vous assurer que votre carte PIV/CAC est connectée et %{try_again_html}. Si ce problème persiste, contactez l’administrateur de votre organisme. +instructions.mfa.piv_cac.no_certificate_html: Veuillez vous assurer que votre carte PIV/CAC est correctement introduite dans votre lecteur de carte à puce et %{try_again_html}. Si ce problème persiste, contactez l’administrateur de votre organisme. instructions.mfa.piv_cac.not_auth_cert_html: Le certificat que vous avez sélectionné n’est pas valide pour ce compte. Veuillez %{please_try_again_html} avec un autre certificat. Si ce problème persiste, contactez l’administrateur de votre organisme. instructions.mfa.piv_cac.please_try_again: réessayer -instructions.mfa.piv_cac.sign_in_html: Assurez-vous que vous disposez d’un compte %{app_name} et que vous avez configuré votre carte PIV/CAC en tant que méthode d’authentification à deux facteurs. +instructions.mfa.piv_cac.sign_in: Assurez-vous que vous disposez d’un compte %{app_name} et que vous avez configuré votre carte PIV (personal identity verification, vérification d’identité personnelle) ou CAC (common access card, carte d’accès commun) comme méthode d’authentification à deux facteurs. instructions.mfa.piv_cac.step_1: Donnez-lui un surnom instructions.mfa.piv_cac.step_1_info: Si vous ajoutez plus d’une carte PIV/CAC, vous saurez laquelle. instructions.mfa.piv_cac.step_2: Insérez votre PIV/CAC dans votre lecteur de carte @@ -1409,7 +1420,7 @@ notices.forgot_password.no_email_sent_explanation_start: Vous n’avez pas reçu notices.forgot_password.resend_email_success: Nous avons envoyé un autre e-mail de réinitialisation de mot de passe. notices.password_changed: Vous avez changé votre mot de passe. notices.phone_confirmed: Un téléphone a été ajouté à votre compte. -notices.piv_cac_configured: Une carte PIV/CAC a été ajoutée à votre compte. +notices.piv_cac_configured: Ajouter votre carte d’employé fédéral. notices.privacy.privacy_act_statement: Déclaration relative à la loi sur la confidentialité notices.privacy.security_and_privacy_practices: Déclaration relatives à la loi sur les pratiques de sécurité et la confidentialité notices.resend_confirmation_email.success: Nous avons envoyé un autre e-mail de confirmation. @@ -1586,11 +1597,11 @@ titles.openid_connect.logout: Déconnexion OpenID Connect titles.passwords.change: Changer le mot de passe de votre compte titles.passwords.forgot: Réinitialiser le mot de passe titles.personal_key: Juste au cas où -titles.piv_cac_login.add: Ajouter votre carte PIV ou CAC +titles.piv_cac_login.add: Ajouter votre carte d’employé fédéral titles.piv_cac_login.new: Utiliser votre carte PIV/CAC pour vous connecter à votre compte titles.piv_cac_setup.new: Utiliser votre carte PIV/CAC pour sécuriser votre compte titles.piv_cac_setup.upsell: Ajouter votre carte d’employé fédéral pour vous connecter plus rapidement et en toute sécurité -titles.present_piv_cac: Présenter votre carte PIV/CAC +titles.present_piv_cac: Insérer votre carte d’employé fédéral titles.present_webauthn: Brancher votre clé de sécurité physique titles.reactivate_account: Réactiver votre compte titles.registrations.new: Créer votre compte @@ -1699,7 +1710,7 @@ two_factor_authentication.phone_verification.troubleshooting.change_number: Util two_factor_authentication.phone_verification.troubleshooting.code_not_received: Je n’ai pas reçu mon code à usage unique two_factor_authentication.phone.delete.failure: Impossible de supprimer votre téléphone. two_factor_authentication.phone.delete.success: Votre téléphone a été supprimé. -two_factor_authentication.piv_cac_header_text: Présenter votre carte PIV/CAC +two_factor_authentication.piv_cac_header_text: Insérer votre carte d’employé fédéral two_factor_authentication.piv_cac_upsell.add_piv: Ajouter une carte PIV/CAC two_factor_authentication.piv_cac_upsell.choose_other_method: Choisir plutôt d’autres méthodes two_factor_authentication.piv_cac_upsell.explain: Ceci permettra de renforcer la sécurité de votre compte et de sauter l’étape de saisie de votre e-mail et mot de passe quand vous vous connecterez. @@ -1778,10 +1789,10 @@ user_mailer.account_reset_cancel.intro_html: Cet e-mail confirme que vous avez a user_mailer.account_reset_cancel.subject: Demande annulée user_mailer.account_reset_complete.intro_html: Le présent e-mail confirme que vous avez supprimé votre compte %{app_name_html}. user_mailer.account_reset_complete.subject: Compte supprimé -user_mailer.account_reset_granted.button: Oui, continuer la suppression +user_mailer.account_reset_granted.button: Confirmer la suppression du compte user_mailer.account_reset_granted.cancel_link_text: veuillez annuler user_mailer.account_reset_granted.help_html: Si vous ne souhaitez pas supprimer votre compte, %{cancel_account_reset_html}. -user_mailer.account_reset_granted.intro_html: Votre délai d’attente de %{waiting_period} est terminé. Veuillez terminer l’étape 2 du processus.

Si vous ne parvenez pas à localiser vos méthodes d’authentification, sélectionnez “confirmer la suppression” pour supprimer votre compte %{app_name}.

À l’avenir, si vous devez accéder aux sites Web gouvernementaux participants qui utilisent %{app_name}, vous pouvez créer un nouveau compte %{app_name} en utilisant la même adresse e-mail après la suppression de votre compte.

+user_mailer.account_reset_granted.intro_html: Votre délai d’attente de %{waiting_period} est terminé. Veuillez terminer l’étape 2 du processus.

Si vous ne parvenez pas à localiser vos méthodes d’authentification, sélectionnez « Confirmer la suppression du compte » pour supprimer votre compte %{app_name}.

À l’avenir, si vous devez accéder aux sites Web gouvernementaux participants qui utilisent %{app_name}, vous pouvez créer un nouveau compte %{app_name} en utilisant la même adresse e-mail après la suppression de votre compte.

user_mailer.account_reset_granted.subject: Supprimer votre compte %{app_name} user_mailer.account_reset_request.cancel: Vous ne voulez pas supprimer votre compte ? Connectez-vous à votre compte %{app_name} pour annuler. user_mailer.account_reset_request.header: Votre compte sera supprimé dans %{interval} diff --git a/config/locales/zh.yml b/config/locales/zh.yml index f7da8feca6e..d47b66bad17 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -106,7 +106,7 @@ account.login.piv_cac: 使用你的政府雇员身份证件登录 account.login.tab_navigation: 账户创建标签页 account.navigation.add_authentication_apps: 添加身份证实应用程序 account.navigation.add_email: 添加电邮地址 -account.navigation.add_federal_id: 添加政府雇员身份证件 +account.navigation.add_federal_id: 添加您的政府雇员ID account.navigation.add_phone_number: 添加电话号码 account.navigation.add_platform_authenticator: 添加人脸或触摸解锁 account.navigation.add_security_key: 添加安全密钥 @@ -651,6 +651,11 @@ doc_auth.info.selfie_capture_status.face_close_to_border: 距离相框太近 doc_auth.info.selfie_capture_status.face_not_found: 没找到面孔 doc_auth.info.selfie_capture_status.face_too_small: 面孔太小 doc_auth.info.selfie_capture_status.too_many_faces: 太多张面孔 +doc_auth.info.selfie_capture.action.capture: 拍照 +doc_auth.info.selfie_capture.action.close: 关闭 +doc_auth.info.selfie_capture.action.retake: 重拍 +doc_auth.info.selfie_capture.action.submit: 使用这张照片 +doc_auth.info.selfie_capture.intro: 相机已打开,准备自拍 doc_auth.info.ssn: 我们需要你的社会保障号码来证实你的姓名、生日和地址。 doc_auth.info.stepping_up_html: 再次验证你的身份以使用这项服务。 %{link_html} doc_auth.info.tag: 建议 @@ -869,12 +874,15 @@ forms.personal_key.instructions: 请在下面输入你的个人密钥,以确 forms.personal_key.required_checkbox: 我将个人密钥存放到了一个安全的地方。 forms.personal_key.title: 输入你的个人密钥 forms.phone.buttons.delete: 去掉电话 -forms.piv_cac_login.submit: 插入 PIV/CAC 卡 -forms.piv_cac_mfa.submit: 提供 PIV/CAC 卡 +forms.piv_cac_login.submit: 插入 PIV/CAC +forms.piv_cac_mfa.submit: 插入 PIV/CAC forms.piv_cac_setup.nickname: PIV/CAC 卡昵称 forms.piv_cac_setup.no_thanks: 不用,谢谢。 -forms.piv_cac_setup.piv_cac_intro_html: '每次你登录时,作为双因素身份证实的一部分,我们会要你提供你的 PIV/CAC 卡。

点击“添加 PIV/CAC”后,你的浏览器会提示要你的 PIV/CAC 并要你选择一个证书。' -forms.piv_cac_setup.submit: 添加 PIV/CAC 卡 +forms.piv_cac_setup.piv_cac_intro_html: + "每次你登录时,作为双因素身份证实的一部分,\ + 我们会要你提供你的 PIV/CAC 卡。

点击“添加 PIV/CAC”后,你的浏览器会提示要你的 PIV/CAC 并要你选择一个证书。" +forms.piv_cac_setup.submit: 插入 PIV/CAC +forms.piv_cac_setup.try_again: 然后重试 forms.registration.labels.email: 输入你的电邮地址 forms.registration.labels.email_language: 选择你的电邮语言偏好 forms.ssn.show: 显示社会保障号码 @@ -928,16 +936,16 @@ headings.passwords.change: 更改密码 headings.passwords.confirm: 确认你目前密码以继续 headings.passwords.confirm_for_personal_key: 输入密码并获得一个新个人密钥 headings.passwords.forgot: 忘了你的密码? -headings.piv_cac_login.account_not_found: 你的 PIV/CAC 没有连接账户 -headings.piv_cac_login.add: 把你的 PIV 或 CAC 设为一个双因素身份证实方法,这样你可以用其登录。 -headings.piv_cac_login.new: 使用你的 PIV 或 CAC 登录 +headings.piv_cac_login.account_not_found: 您的政府雇员ID未与帐户连接 +headings.piv_cac_login.add: 使用智能卡读卡器设置您的个人身份验证 (PIV) 或通用访问卡 (CAC)。您可以使用其中任何一种作为双因素身份证实方法来登录。 +headings.piv_cac_login.new: 插入您的政府雇员ID headings.piv_cac_login.success: 你已成功把 PIV/CAC 设为一个身份证实方法 headings.piv_cac_setup.already_associated: 你提供的 PIV/CAC 与另外一个用户相关。 headings.piv_cac_setup.new: 用你的 PIV/CAC 卡来保护你的账户安全 headings.piv_cac.certificate.bad: 你选择的 PIV/CAC 证书有误 headings.piv_cac.certificate.expired: 你选择的 PIV/CAC 证书已过期 headings.piv_cac.certificate.invalid: 你选择的 PIV/CAC 证书有误 -headings.piv_cac.certificate.none: 我们在你的 PIV/CAC 卡上探查不到证书 +headings.piv_cac.certificate.none: 我们在您政府雇员ID上探查不到证书 headings.piv_cac.certificate.not_auth_cert: 请给你的PIV/CAC 卡选择另外一个证书 headings.piv_cac.certificate.revoked: 你选择的 PIV/CAC 证书已从你的卡上撤销 headings.piv_cac.certificate.unverified: 你选择的 PIV/CAC 证书有误 @@ -1190,6 +1198,7 @@ in_person_proofing.body.barcode.cancel_link_text: 取消你的条形码 in_person_proofing.body.barcode.close_window: 你现在可以关闭这一窗口。 in_person_proofing.body.barcode.deadline: 你必须在 %{deadline}之前去任何参与邮局。 in_person_proofing.body.barcode.deadline_restart: 如果你在截止日期后才去邮局,你的信息不会被存储,你又得从头开始这一过程。 +in_person_proofing.body.barcode.eipp_tag: GSA 增强型试行条形码 in_person_proofing.body.barcode.eipp_what_to_bring: 取决于您身份证件类型,您也许需要显示支持文件。请仔细阅读以下选项: in_person_proofing.body.barcode.email_sent: 我们已将条形码和以下信息发到了您用来登录的电邮地址 in_person_proofing.body.barcode.learn_more: 了解有关携带物品的更多信息 @@ -1295,9 +1304,10 @@ in_person_proofing.process.barcode.heading: 出示你的 %{app_name} 条形码 in_person_proofing.process.barcode.info: 邮局工作人员需要扫描该页顶部的条形码你可以把该页打印出来,或在你的移动设备上显示。 in_person_proofing.process.eipp_bring_id_plus_documents.heading: 选项2:请携带州颁发的标准身份证件和支持性文件 in_person_proofing.process.eipp_bring_id_plus_documents.info: '您可以出示标准驾照或者州颁发的身份卡以及以下A、B、C选项的支持文件。你只需选择下列选项之一:' +in_person_proofing.process.eipp_bring_id_with_current_address.heading: A. 带有当前地址的REAL身份证 in_person_proofing.process.eipp_bring_id.heading: 选项1:携带REAL身份证件 in_person_proofing.process.eipp_bring_id.image_alt_text: REAL身份证件 -in_person_proofing.process.eipp_bring_id.info: '如果你出示一个州的REAL身份证件或驾照,则无需出示支持性文件' +in_person_proofing.process.eipp_bring_id.info: 如果您出示是REAL身份证的驾照或身份卡,并且上面的地址是你当前的地址,则无需出示支持性文件。 in_person_proofing.process.eipp_state_id_military_id.heading: B.州颁发的标准身份+军人证件 in_person_proofing.process.eipp_state_id_military_id.image_alt_text: 州身份证和军人证件 in_person_proofing.process.eipp_state_id_military_id.info: 出示标准驾照或州颁发的身份卡, 以及军人证件。 @@ -1315,6 +1325,9 @@ in_person_proofing.process.eipp_state_id_supporting_docs.info_list: - 车辆登记卡 - 房屋保险单 - 车辆保险单 +in_person_proofing.process.real_id_and_supporting_docs.heading: B. REAL身份证 + 两种支持性文件 +in_person_proofing.process.real_id_and_supporting_docs.image_alt_text: REAL身份证和两种文件 +in_person_proofing.process.real_id_and_supporting_docs.info: '如果你的REAL身份证上的地址不是你当前的地址,请出示REAL身份证以及以下清单中的两种支持性文件:' in_person_proofing.process.state_id.heading: 出示你州驾照或州非驾照身份卡。 in_person_proofing.process.state_id.heading_eipp: 出示你的身份证件以及支持性文件 in_person_proofing.process.state_id.info: 该证件必须在有效期内。我们目前不接受任何其他形式的身份证件,比如护照和军队身份证件。 @@ -1331,17 +1344,17 @@ instructions.forgot_password.close_window: 重设你的密码后,你就可以 instructions.go_back_to_mobile_app: 要继续的话,请回到 %{friendly_name}应用程序并登录。 instructions.mfa.authenticator.confirm_code_html: 输入来自你身份证实应用程序的代码。如果你在应用程序中设了几个账户,请输入与在 %{app_name_html}对应的代码。 instructions.mfa.authenticator.manual_entry: 或者动手将这个密码输入你的身份证实应用程序。 -instructions.mfa.piv_cac.account_not_found_html: 用你的电邮地址和密码

%{sign_in}。然后把你的 PIV/CAC 添加到账户。

没有%{app_name} 账户? %{create_account}

+instructions.mfa.piv_cac.account_not_found_html: '

使用您的电子邮件地址和密码 %{sign_in}。然后将您的 PIV/CAC 插入智能卡读卡器以添加到您的帐户。

没有 %{app_name} 帐户?%{create_account}

' instructions.mfa.piv_cac.add_from_sign_in_html: '说明: 看到“添加 PIV/CAC”时插入你的 PIV or CAC 。你将需要选择一个证书 (恰当的证书可能会有你的名字)而且输入你的个人识别号码(PIN) (你的个人识别号码(PIN)是在设置 PIV/CAC 时设立的)。' instructions.mfa.piv_cac.already_associated_html: 请从另一个 PIV/CAC 选择证书,联系管理员以保证你的 PIV/CAC 是最新的。如果你认为这是一个错误, %{try_again_html}。 instructions.mfa.piv_cac.back_to_sign_in: 返回去登录 -instructions.mfa.piv_cac.confirm_piv_cac: 提供与你账户相关的 PIV/CAC。 -instructions.mfa.piv_cac.did_not_work_html: 请 %{please_try_again_html}。如果这一问题持续的话,请联系你机构的管理员。 +instructions.mfa.piv_cac.confirm_piv_cac: 将与您的帐户关联的 PIV/CAC 插入智能卡读卡器。 +instructions.mfa.piv_cac.did_not_work_html: 请确保您的 PIV/CAC 已正确插入智能卡读卡器,%{please_try_again_html}。如果这个问题持续存在,请联系您机构的管理员。 instructions.mfa.piv_cac.http_failure: 服务器反应时间过长。请再试一次。 -instructions.mfa.piv_cac.no_certificate_html: 请确保你的 PIV/CAC 是连上的并 %{try_again_html}。如果这一问题持续的话,请联系你机构的管理员。 +instructions.mfa.piv_cac.no_certificate_html: 请确保您的 PIV/CAC 已正确插入智能卡读卡器,%{try_again_html}。如果这个问题持续存在,请联系您机构的管理员。 instructions.mfa.piv_cac.not_auth_cert_html: 你选择的证书对这个账户无效。请用另外一个证书 %{please_try_again_html}。如果这一问题持续的话,请联系你机构的管理员。 instructions.mfa.piv_cac.please_try_again: 再试一次 -instructions.mfa.piv_cac.sign_in_html: 确保 你有 %{app_name} 账户 而且 PIV/CAC 已被你设置为一个双因素身份证实方法。 +instructions.mfa.piv_cac.sign_in: 确保您有 %{app_name} 帐户并且已设置个人身份验证 (PIV) 或通用访问卡 (CAC) 作为双因素身份证实方法。 instructions.mfa.piv_cac.step_1: 给它一个昵称 instructions.mfa.piv_cac.step_1_info: 这样如果你添加了一个以上 PIV/CAC 话,你就能把它们分辨开来。 instructions.mfa.piv_cac.step_2: 把 PIV/CAC 插入读卡器 @@ -1420,7 +1433,7 @@ notices.forgot_password.no_email_sent_explanation_start: 没有收到电邮? notices.forgot_password.resend_email_success: 我们发了另外一个重设密码的电邮。 notices.password_changed: 你更改了密码。 notices.phone_confirmed: 你账户添加了一个电话。 -notices.piv_cac_configured: 你账户添加了一个 PIV/CAC 卡。 +notices.piv_cac_configured: 添加您的政府雇员ID notices.privacy.privacy_act_statement: 隐私法声明 notices.privacy.security_and_privacy_practices: 安全实践和隐私法声明 notices.resend_confirmation_email.success: 我们发送了另外一个确认电邮。 @@ -1597,11 +1610,11 @@ titles.openid_connect.logout: OpenID Connect 登出 titles.passwords.change: 更改你账户密码 titles.passwords.forgot: 重设密码 titles.personal_key: 万一 -titles.piv_cac_login.add: 添加你的 PIV 或者 CAC +titles.piv_cac_login.add: 添加您的政府雇员ID titles.piv_cac_login.new: 用 PIV/CAC 登入你的账户 titles.piv_cac_setup.new: 用 PIV/CAC 卡来保护你账户安全 titles.piv_cac_setup.upsell: 添加你的政府雇员身份证件更快、更安全地登录 -titles.present_piv_cac: 提供你的 PIV/CAC +titles.present_piv_cac: 插入您的政府雇员ID titles.present_webauthn: 连接你的硬件安全密钥 titles.reactivate_account: 重新激活你账户 titles.registrations.new: 设立账户 @@ -1710,7 +1723,7 @@ two_factor_authentication.phone_verification.troubleshooting.change_number: 使 two_factor_authentication.phone_verification.troubleshooting.code_not_received: 我没收到一次性代码 two_factor_authentication.phone.delete.failure: 无法去掉你的电话。 two_factor_authentication.phone.delete.success: 你的电话已被去掉。 -two_factor_authentication.piv_cac_header_text: 提供你的 PIV/CAC +two_factor_authentication.piv_cac_header_text: 插入您的政府雇员ID two_factor_authentication.piv_cac_upsell.add_piv: 添加 PIV/CAC 卡 two_factor_authentication.piv_cac_upsell.choose_other_method: 选择其他方法 two_factor_authentication.piv_cac_upsell.explain: 这将改善你账户安全,而且你在登录时无需再输入电邮和密码。 @@ -1789,10 +1802,10 @@ user_mailer.account_reset_cancel.intro_html: 这封电邮确认你已取消删 user_mailer.account_reset_cancel.subject: 请求已取消 user_mailer.account_reset_complete.intro_html: 这封电邮确认你已删除你的 %{app_name_html} 账户。 user_mailer.account_reset_complete.subject: 账户已删除 -user_mailer.account_reset_granted.button: 是的,继续删除 +user_mailer.account_reset_granted.button: 确认删除账户 user_mailer.account_reset_granted.cancel_link_text: 请取消 user_mailer.account_reset_granted.help_html: 如果你不想删除你的账户,%{cancel_account_reset_html}。 -user_mailer.account_reset_granted.intro_html: 你%{waiting_period}的等待期已结束。请完成流程的第 2 步。

如果您无法找到你的身份证实方法,请选择“确认删除”以删除你的 %{app_name} 帐户。

如果你将来需要访问使用 %{app_name} 的参与政府网站,可以在帐户删除后使用相同的电子邮件地址创建一个新的 %{app_name} 帐户.

+user_mailer.account_reset_granted.intro_html: 你%{waiting_period}的等待期已结束。请完成流程的第 2 步。

如果您无法找到你的身份证实方法,请选择“确认删除账户”以删除你的 %{app_name} 帐户。

如果你将来需要访问使用 %{app_name} 的参与政府网站,可以在帐户删除后使用相同的电子邮件地址创建一个新的 %{app_name} 帐户.

user_mailer.account_reset_granted.subject: 删除你的 %{app_name} 账户 user_mailer.account_reset_request.cancel: 不想删除你的账户?登入你的 %{app_name} 账户来取消。 user_mailer.account_reset_request.header: 你的账户会在%{interval}后删除。 diff --git a/config/routes.rb b/config/routes.rb index 76a671e3409..b311cabff5a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -389,15 +389,6 @@ # sometimes underscores get messed up when linked to via SMS as: :capture_doc_dashes - # DEPRECATION NOTICE - # Usage of the /in_person_proofing/address routes is deprecated. - # Use the /in_person/address routes instead. - # - # These have been left in temporarily to prevent any impact to users - # during the deprecation process. - get '/in_person_proofing/address' => redirect('/verify/in_person/address', status: 307) - put '/in_person_proofing/address' => redirect('/verify/in_person/address', status: 307) - get '/in_person_proofing/state_id' => 'in_person/state_id#show' put '/in_person_proofing/state_id' => 'in_person/state_id#update' diff --git a/db/primary_migrate/20240801155943_change_in_person_enrollment_sponsor_id_to_non_nullable.rb b/db/primary_migrate/20240801155943_change_in_person_enrollment_sponsor_id_to_non_nullable.rb new file mode 100644 index 00000000000..cc873c222f0 --- /dev/null +++ b/db/primary_migrate/20240801155943_change_in_person_enrollment_sponsor_id_to_non_nullable.rb @@ -0,0 +1,5 @@ +class ChangeInPersonEnrollmentSponsorIdToNonNullable < ActiveRecord::Migration[7.1] + def change + add_check_constraint :in_person_enrollments, "sponsor_id IS NOT NULL", name: "in_person_enrollments_sponsor_id_null", validate: false + end +end diff --git a/db/primary_migrate/20240801183410_validate_change_in_person_enrollment_sponsor_id_to_non_nullable.rb b/db/primary_migrate/20240801183410_validate_change_in_person_enrollment_sponsor_id_to_non_nullable.rb new file mode 100644 index 00000000000..46591800bce --- /dev/null +++ b/db/primary_migrate/20240801183410_validate_change_in_person_enrollment_sponsor_id_to_non_nullable.rb @@ -0,0 +1,12 @@ +class ValidateChangeInPersonEnrollmentSponsorIdToNonNullable < ActiveRecord::Migration[7.1] + def up + validate_check_constraint :in_person_enrollments, name: "in_person_enrollments_sponsor_id_null" + change_column_null :in_person_enrollments, :sponsor_id, false + remove_check_constraint :in_person_enrollments, name: "in_person_enrollments_sponsor_id_null" + end + + def down + add_check_constraint :in_person_enrollments, "sponsor_id IS NOT NULL", name: "in_person_enrollments_sponser_id_null", validate: false + change_column_null :in_person_enrollments, :sponsor_id, true + end +end diff --git a/db/schema.rb b/db/schema.rb index 06cfd26c3f8..3a781f89d38 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_07_08_183211) do +ActiveRecord::Schema[7.1].define(version: 2024_08_01_183410) do # These are extensions that must be enabled in order to support this database enable_extension "citext" enable_extension "pg_stat_statements" @@ -318,7 +318,7 @@ t.boolean "ready_for_status_check", default: false t.datetime "notification_sent_at", comment: "The time a notification was sent" t.datetime "last_batch_claimed_at" - t.string "sponsor_id" + t.string "sponsor_id", null: false t.string "doc_auth_result" t.index ["profile_id"], name: "index_in_person_enrollments_on_profile_id" t.index ["ready_for_status_check"], name: "index_in_person_enrollments_on_ready_for_status_check", where: "(ready_for_status_check = true)" diff --git a/dockerfiles/idp_prod.Dockerfile b/dockerfiles/idp_prod.Dockerfile index bd462848476..b006f4e3a2f 100644 --- a/dockerfiles/idp_prod.Dockerfile +++ b/dockerfiles/idp_prod.Dockerfile @@ -1,42 +1,31 @@ -FROM ruby:3.3.1-slim +######################################################################### +# This is a multi-stage build. This stage just builds and downloads +# gems and yarn stuff and large files. We have it so that we can +# avoid having build-essential and the large-files token be in the +# main image. +######################################################################### +FROM ruby:3.3.1-slim as builder # Set environment variables ENV RAILS_ROOT /app ENV RAILS_ENV production ENV NODE_ENV production -ENV RAILS_SERVE_STATIC_FILES true ENV RAILS_LOG_TO_STDOUT true ENV RAILS_LOG_LEVEL debug -ENV BUNDLE_PATH /usr/local/bundle +ENV BUNDLE_PATH /app/vendor/bundle ENV YARN_VERSION 1.22.5 ENV NODE_VERSION 20.10.0 ENV BUNDLER_VERSION 2.5.6 -ENV POSTGRES_SSLMODE prefer -ENV POSTGRES_NAME idp -ENV POSTGRES_HOST postgres -ENV POSTGRES_USERNAME postgres -ENV POSTGRES_PASSWORD postgres -ENV POSTGRES_WORKER_SSLMODE prefer -ENV POSTGRES_WORKER_NAME idp-worker-jobs -ENV POSTGRES_WORKER_HOST postgres-worker -ENV POSTGRES_WORKER_USERNAME postgres -ENV POSTGRES_WORKER_PASSWORD postgres -ENV REDIS_IRS_ATTEMPTS_API_URL redis://redis:6379/2 -ENV REDIS_THROTTLE_URL redis://redis:6379/1 -ENV REDIS_URL redis://redis:6379 -ENV ASSET_HOST http://localhost:3000 -ENV DOMAIN_NAME localhost:3000 -ENV PIV_CAC_SERVICE_URL https://localhost:8443/ -ENV PIV_CAC_VERIFY_TOKEN_URL https://localhost:8443/ # Install dependencies -RUN apt-get update && \ - apt-get install -y \ +RUN apt-get update -qq && \ + apt-get install -y --no-install-recommends \ + openssh-client \ git-core \ + build-essential \ git-lfs \ curl \ zlib1g-dev \ - build-essential \ libssl-dev \ libreadline-dev \ libyaml-dev \ @@ -48,9 +37,20 @@ RUN apt-get update && \ software-properties-common \ libffi-dev \ libpq-dev \ + xz-utils \ unzip && \ rm -rf /var/lib/apt/lists/* +# get the large files +WORKDIR / +ARG LARGE_FILES_USER +ARG LARGE_FILES_TOKEN +RUN git clone --depth 1 https://$LARGE_FILES_USER:$LARGE_FILES_TOKEN@gitlab.login.gov/lg-public/idp-large-files.git + +# Set the working directory +WORKDIR $RAILS_ROOT + +# Install Node RUN curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \ && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ && rm "node-v$NODE_VERSION-linux-x64.tar.xz" \ @@ -59,32 +59,12 @@ RUN curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE # Install Yarn RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn-archive-keyring.gpg >/dev/null RUN echo "deb [signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list -RUN apt-get update && apt-get install -y yarn=1.22.5-1 - -# Download RDS Combined CA Bundle -RUN mkdir -p /usr/local/share/aws \ - && curl https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem > /usr/local/share/aws/rds-combined-ca-bundle.pem \ - && chmod 644 /usr/local/share/aws/rds-combined-ca-bundle.pem - -# Create a new user and set up the working directory -RUN addgroup --gid 1000 app && \ - adduser --uid 1000 --gid 1000 --disabled-password --gecos "" app && \ - mkdir -p $RAILS_ROOT && \ - mkdir -p $BUNDLE_PATH && \ - mkdir -p $RAILS_ROOT/tmp/pids && \ - mkdir -p $RAILS_ROOT/log - -# Setup timezone data -ENV TZ=Etc/UTC -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -# Create the working directory -WORKDIR $RAILS_ROOT +RUN apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/yarn.list && apt-get install -y yarn=1.22.5-1 +# bundle install COPY .ruby-version $RAILS_ROOT/.ruby-version COPY Gemfile $RAILS_ROOT/Gemfile COPY Gemfile.lock $RAILS_ROOT/Gemfile.lock - RUN bundle config build.nokogiri --use-system-libraries RUN bundle config set --local deployment 'true' RUN bundle config set --local path $BUNDLE_PATH @@ -92,6 +72,7 @@ RUN bundle config set --local without 'deploy development doc test' RUN bundle install --jobs $(nproc) RUN bundle binstubs --all +# yarn install COPY package.json $RAILS_ROOT/package.json COPY yarn.lock $RAILS_ROOT/yarn.lock RUN yarn install --production=true --frozen-lockfile --cache-folder .yarn-cache @@ -116,56 +97,140 @@ COPY ./.browserslistrc ./.browserslistrc # Copy keys COPY keys.example $RAILS_ROOT/keys -# Copy big files -ARG LARGE_FILES_USER -ARG LARGE_FILES_TOKEN -RUN mkdir -p $RAILS_ROOT/geo_data && chmod 755 $RAILS_ROOT/geo_data -RUN mkdir -p $RAILS_ROOT/pwned_passwords && chmod 755 $RAILS_ROOT/pwned_passwords -RUN git clone --depth 1 https://$LARGE_FILES_USER:$LARGE_FILES_TOKEN@gitlab.login.gov/lg-public/idp-large-files.git && \ - cp idp-large-files/GeoIP2-City.mmdb $RAILS_ROOT/geo_data/ && \ - cp idp-large-files/GeoLite2-City.mmdb $RAILS_ROOT/geo_data/ && \ - cp idp-large-files/pwned-passwords.txt $RAILS_ROOT/pwned_passwords/ && \ - rm -r idp-large-files -RUN mkdir -p /usr/local/share/aws && \ - curl https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem > /usr/local/share/aws/rds-combined-ca-bundle.pem - # Copy robots.txt COPY public/ban-robots.txt $RAILS_ROOT/public/robots.txt # Copy application.yml.default to application.yml COPY ./config/application.yml.default.prod $RAILS_ROOT/config/application.yml -# Setup config files -COPY config/agencies.localdev.yml $RAILS_ROOT/config/agencies.yml -COPY config/iaa_gtcs.localdev.yml $RAILS_ROOT/config/iaa_gtcs.yml -COPY config/iaa_orders.localdev.yml $RAILS_ROOT/config/iaa_orders.yml -COPY config/iaa_statuses.localdev.yml $RAILS_ROOT/config/iaa_statuses.yml -COPY config/integration_statuses.localdev.yml $RAILS_ROOT/config/integration_statuses.yml -COPY config/integrations.localdev.yml $RAILS_ROOT/config/integrations.yml -COPY config/partner_account_statuses.localdev.yml $RAILS_ROOT/config/partner_account_statuses.yml -COPY config/partner_accounts.localdev.yml $RAILS_ROOT/config/partner_accounts.yml -COPY certs.example $RAILS_ROOT/certs -COPY config/service_providers.localdev.yml $RAILS_ROOT/config/service_providers.yml - # Precompile assets RUN bundle exec rake assets:precompile --trace +# get service_providers.yml and related files +ARG SERVICE_PROVIDERS_KEY +RUN echo "$SERVICE_PROVIDERS_KEY" > private_key_file ; chmod 600 private_key_file +RUN GIT_SSH_COMMAND='ssh -i private_key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new' git clone --depth 1 git@github.com:18F/identity-idp-config.git +RUN mkdir -p $RAILS_ROOT/config/ $RAILS_ROOT/public/assets/images +RUN cp identity-idp-config/*.yml $RAILS_ROOT/config/ +RUN cp -rp identity-idp-config/certs $RAILS_ROOT/ +RUN cp -rp identity-idp-config/public/assets/images/sp-logos $RAILS_ROOT/public/assets/images/ + +# set up deploy.json ARG ARG_CI_COMMIT_BRANCH="branch_placeholder" ARG ARG_CI_COMMIT_SHA="sha_placeholder" RUN mkdir -p $RAILS_ROOT/public/api/ RUN echo "{\"branch\":\"$ARG_CI_COMMIT_BRANCH\",\"git_sha\":\"$ARG_CI_COMMIT_SHA\"}" > $RAILS_ROOT/public/api/deploy.json +# Download RDS Combined CA Bundle +RUN mkdir -p /usr/local/share/aws \ + && curl https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem > /usr/local/share/aws/rds-combined-ca-bundle.pem \ + && chmod 644 /usr/local/share/aws/rds-combined-ca-bundle.pem + # Generate and place SSL certificates for puma RUN openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 1825 \ -keyout $RAILS_ROOT/keys/localhost.key \ -out $RAILS_ROOT/keys/localhost.crt \ - -subj "/C=US/ST=Fake/L=Fakerton/O=Dis/CN=localhost" + -subj "/C=US/ST=Fake/L=Fakerton/O=Dis/CN=localhost" && \ + chmod 644 $RAILS_ROOT/keys/localhost.key $RAILS_ROOT/keys/localhost.crt + +######################################################################### +# This is the main image. +######################################################################### +FROM ruby:3.3.1-slim + +# Set environment variables +ENV RAILS_ROOT /app +ENV RAILS_ENV production +ENV NODE_ENV production +ENV RAILS_SERVE_STATIC_FILES true +ENV RAILS_LOG_TO_STDOUT true +ENV RAILS_LOG_LEVEL debug +ENV BUNDLE_PATH /app/vendor/bundle +ENV BUNDLER_VERSION 2.5.6 +ENV POSTGRES_SSLMODE prefer +ENV POSTGRES_NAME idp +ENV POSTGRES_HOST postgres +ENV POSTGRES_USERNAME postgres +ENV POSTGRES_PASSWORD postgres +ENV POSTGRES_WORKER_SSLMODE prefer +ENV POSTGRES_WORKER_NAME idp-worker-jobs +ENV POSTGRES_WORKER_HOST postgres-worker +ENV POSTGRES_WORKER_USERNAME postgres +ENV POSTGRES_WORKER_PASSWORD postgres +ENV REDIS_IRS_ATTEMPTS_API_URL redis://redis:6379/2 +ENV REDIS_THROTTLE_URL redis://redis:6379/1 +ENV REDIS_URL redis://redis:6379 +ENV ASSET_HOST http://localhost:3000 +ENV DOMAIN_NAME localhost:3000 +ENV PIV_CAC_SERVICE_URL https://localhost:8443/ +ENV PIV_CAC_VERIFY_TOKEN_URL https://localhost:8443/ +ENV REMOTE_ADDRESS_HEADER X-Forwarded-For + +# Install dependencies +RUN apt-get update -qq && \ + apt-get install -y --no-install-recommends \ + openssh-client \ + git-core \ + curl \ + zlib1g-dev \ + libssl-dev \ + libreadline-dev \ + libyaml-dev \ + libxml2-dev \ + libxslt1-dev \ + libcurl4-openssl-dev \ + software-properties-common \ + libffi-dev \ + libpq-dev \ + unzip && \ + rm -rf /var/lib/apt/lists/* + +# get RDS combined CA bundle +COPY --from=builder /usr/local/share/aws/rds-combined-ca-bundle.pem /usr/local/share/aws/rds-combined-ca-bundle.pem + +# Create a new user and set up the working directory +RUN addgroup --gid 1000 app && \ + adduser --uid 1000 --gid 1000 --disabled-password --gecos "" app && \ + mkdir -p $RAILS_ROOT && \ + mkdir -p $RAILS_ROOT/tmp/pids && \ + mkdir -p $RAILS_ROOT/log + +# Setup timezone data +ENV TZ=Etc/UTC +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# Create the working directory +WORKDIR $RAILS_ROOT + +# set bundler up +RUN bundle config build.nokogiri --use-system-libraries +RUN bundle config set --local deployment 'true' +RUN bundle config set --local path $BUNDLE_PATH +RUN bundle config set --local without 'deploy development doc test' + +# Copy big files +RUN mkdir -p $RAILS_ROOT/geo_data && chmod 755 $RAILS_ROOT/geo_data +RUN mkdir -p $RAILS_ROOT/pwned_passwords && chmod 755 $RAILS_ROOT/pwned_passwords +COPY --from=builder /idp-large-files/GeoIP2-City.mmdb $RAILS_ROOT/geo_data/ +COPY --from=builder /idp-large-files/GeoLite2-City.mmdb $RAILS_ROOT/geo_data/ +COPY --from=builder /idp-large-files/pwned-passwords.txt $RAILS_ROOT/pwned_passwords/pwned_passwords.txt + +# copy in all the stuff from the builder image +COPY --from=builder $RAILS_ROOT $RAILS_ROOT + +# copy keys in +COPY --from=builder $RAILS_ROOT/keys/localhost.key $RAILS_ROOT/keys/ +COPY --from=builder $RAILS_ROOT/keys/localhost.crt $RAILS_ROOT/keys/ # make everything the proper perms after everything is initialized RUN chown -R app:app $RAILS_ROOT/tmp && \ chown -R app:app $RAILS_ROOT/log && \ find $RAILS_ROOT -type d | xargs chmod 755 +# get rid of suid/sgid binaries +RUN find / -perm /4000 -type f | xargs chmod u-s +RUN find / -perm /2000 -type f | xargs chmod g-s + # Expose the port the app runs on EXPOSE 3000 diff --git a/dockerfiles/idp_prod.Dockerfile.dockerignore b/dockerfiles/idp_prod.Dockerfile.dockerignore new file mode 100644 index 00000000000..a354b35767f --- /dev/null +++ b/dockerfiles/idp_prod.Dockerfile.dockerignore @@ -0,0 +1,2 @@ +/app/node_modules + diff --git a/dockerfiles/idp_review_app.Dockerfile b/dockerfiles/idp_review_app.Dockerfile index 0c5a392cba0..dc41e146280 100644 --- a/dockerfiles/idp_review_app.Dockerfile +++ b/dockerfiles/idp_review_app.Dockerfile @@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y yarn=1.22.5-1 # Download RDS Combined CA Bundle RUN mkdir -p /usr/local/share/aws \ - && curl https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem > /usr/local/share/aws/rds-combined-ca-bundle.pem \ + && curl https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem > /usr/local/share/aws/rds-combined-ca-bundle.pem \ && chmod 644 /usr/local/share/aws/rds-combined-ca-bundle.pem # Create a new user and set up the working directory diff --git a/knapsack_rspec_report.json b/knapsack_rspec_report.json index 8529cfd2993..45cabbe768d 100644 --- a/knapsack_rspec_report.json +++ b/knapsack_rspec_report.json @@ -1,988 +1,1020 @@ { - "spec/bin/aamva-test-cert_spec.rb": 0.015830526, - "spec/bin/oncall/download-piv-certs_spec.rb": 0.036581459000000004, - "spec/bin/oncall/email-deliveries_spec.rb": 0.012229523, - "spec/bin/oncall/otp-deliveries_spec.rb": 0.040656878, - "spec/bin/query-cloudwatch_spec.rb": 0.117611072, - "spec/browsers_json_spec.rb": 0.004341182, - "spec/components/accordion_component_spec.rb": 0.017547483, - "spec/components/alert_component_spec.rb": 0.03435352, - "spec/components/alert_icon_component_spec.rb": 0.017827416, - "spec/components/badge_component_spec.rb": 0.017369881, - "spec/components/barcode_component_spec.rb": 0.059223615, - "spec/components/base_component_spec.rb": 0.049460058, - "spec/components/block_link_component_spec.rb": 0.017263774, - "spec/components/button_component_spec.rb": 0.045517416, - "spec/components/captcha_submit_button_component_spec.rb": 0.105820891, - "spec/components/click_observer_component_spec.rb": 0.009626251, - "spec/components/clipboard_button_component_spec.rb": 0.023431367, - "spec/components/countdown_alert_component_spec.rb": 0.030079038000000002, - "spec/components/countdown_component_spec.rb": 0.024130666000000002, - "spec/components/download_button_component_spec.rb": 0.013629746, - "spec/components/flash_component_spec.rb": 0.017008603, - "spec/components/form_link_component_spec.rb": 0.00639206, - "spec/components/icon_component_spec.rb": 0.02189685, - "spec/components/icon_list_component_spec.rb": 0.029941942, - "spec/components/javascript_required_component_spec.rb": 0.041846958, - "spec/components/language_picker_component_spec.rb": 0.033247672, - "spec/components/login_button_component_spec.rb": 0.033269374, - "spec/components/manageable_authenticator_component_spec.rb": 0.287030341, - "spec/components/memorable_date_component_spec.rb": 0.102932541, - "spec/components/modal_component_spec.rb": 0.014399139, - "spec/components/one_time_code_input_component_spec.rb": 0.142931072, - "spec/components/page_footer_component_spec.rb": 0.015584972, - "spec/components/page_heading_component_spec.rb": 0.014109533, - "spec/components/password_confirmation_component_spec.rb": 0.024660672, - "spec/components/password_strength_component_spec.rb": 0.007406664, - "spec/components/password_toggle_component_spec.rb": 0.04867066, - "spec/components/phone_input_component_spec.rb": 0.493458115, - "spec/components/print_button_component_spec.rb": 0.008145213, - "spec/components/process_list_component_spec.rb": 0.025995531, - "spec/components/spinner_button_component_spec.rb": 0.045401525, - "spec/components/status_page_component_spec.rb": 0.045048069, - "spec/components/step_indicator_component_spec.rb": 0.089908403, - "spec/components/step_indicator_step_component_spec.rb": 0.024734181, - "spec/components/submit_button_component_spec.rb": 0.019589735, - "spec/components/tab_navigation_component_spec.rb": 0.613515342, - "spec/components/tag_component_spec.rb": 0.031972532, - "spec/components/time_component_spec.rb": 0.023825647, - "spec/components/troubleshooting_options_component_spec.rb": 0.035640972, - "spec/components/validated_field_component_spec.rb": 0.056232242, - "spec/components/vendor_outage_alert_component_spec.rb": 0.031220689, - "spec/components/webauthn_input_component_spec.rb": 0.036133815, - "spec/components/webauthn_verify_button_component_spec.rb": 0.026984791, - "spec/config/initializers/ab_tests_spec.rb": 0.004711234, - "spec/config/initializers/ahoy_spec.rb": 0.01258857, - "spec/config/initializers/ext_digest_spec.rb": 0.004631436, - "spec/config/initializers/job_configurations_spec.rb": 0.089360145, - "spec/config/initializers/phonelib_spec.rb": 0.00295874, - "spec/config/initializers/secure_headers_spec.rb": 0.003595205, - "spec/controllers/account_reset/cancel_controller_spec.rb": 0.681108609, - "spec/controllers/account_reset/confirm_delete_account_controller_spec.rb": 0.014198023, - "spec/controllers/account_reset/confirm_request_controller_spec.rb": 0.014252924, - "spec/controllers/account_reset/delete_account_controller_spec.rb": 1.761060579, - "spec/controllers/account_reset/pending_controller_spec.rb": 0.44271623099999996, - "spec/controllers/account_reset/recovery_options_controller_spec.rb": 0.102893713, - "spec/controllers/account_reset/request_controller_spec.rb": 2.050862981, - "spec/controllers/accounts/personal_keys_controller_spec.rb": 0.512031622, - "spec/controllers/accounts_controller_spec.rb": 0.590619654, - "spec/controllers/analytics_events_controller_spec.rb": 0.012856387, - "spec/controllers/api/internal/sessions_controller_spec.rb": 0.921191606, - "spec/controllers/api/internal/two_factor_authentication/auth_app_controller_spec.rb": 0.7726317349999999, - "spec/controllers/api/internal/two_factor_authentication/piv_cac_controller_spec.rb": 0.595588382, - "spec/controllers/api/internal/two_factor_authentication/webauthn_controller_spec.rb": 0.862551373, - "spec/controllers/application_controller_spec.rb": 2.395992949, - "spec/controllers/concerns/account_reset_concern_spec.rb": 0.14317514, - "spec/controllers/concerns/api/csrf_token_concern_spec.rb": 0.013385201, - "spec/controllers/concerns/billable_event_trackable_spec.rb": 0.032896561, - "spec/controllers/concerns/effective_user_spec.rb": 0.138732019, - "spec/controllers/concerns/forced_reauthentication_concern_spec.rb": 0.012444568, - "spec/controllers/concerns/idv/ab_test_analytics_concern_spec.rb": 0.13783114, - "spec/controllers/concerns/idv/acuant_concern_spec.rb": 0.035816031, - "spec/controllers/concerns/idv/document_capture_concern_spec.rb": 0.021113107, - "spec/controllers/concerns/idv/phone_otp_rate_limitable_spec.rb": 0.031598123, - "spec/controllers/concerns/idv/step_indicator_concern_spec.rb": 0.243497169, - "spec/controllers/concerns/idv/threat_metrix_concern_spec.rb": 0.036245427999999996, - "spec/controllers/concerns/idv_step_concern_spec.rb": 0.678521789, - "spec/controllers/concerns/mfa_setup_concern_spec.rb": 0.38471385700000005, - "spec/controllers/concerns/rate_limit_concern_spec.rb": 0.395281009, - "spec/controllers/concerns/reauthentication_required_concern_spec.rb": 0.240974851, - "spec/controllers/concerns/recaptcha_concern_spec.rb": 0.050761, - "spec/controllers/concerns/render_condition_concern_spec.rb": 0.064049606, - "spec/controllers/concerns/second_mfa_reminder_concern_spec.rb": 0.101899651, - "spec/controllers/concerns/verify_sp_attributes_concern_spec.rb": 0.367470549, - "spec/controllers/country_support_controller_spec.rb": 0.022673327, - "spec/controllers/event_disavowal_controller_spec.rb": 0.276449091, - "spec/controllers/fake_s3_controller_spec.rb": 0.0465893, - "spec/controllers/forgot_password_controller_spec.rb": 0.01019632, - "spec/controllers/frontend_log_controller_spec.rb": 0.283802134, - "spec/controllers/health/database_controller_spec.rb": 0.035014223, - "spec/controllers/health/health_controller_spec.rb": 0.025403829, - "spec/controllers/health/outbound_controller_spec.rb": 0.047324815000000006, - "spec/controllers/idv/address_controller_spec.rb": 0.355560606, - "spec/controllers/idv/agreement_controller_spec.rb": 1.671031312, - "spec/controllers/idv/by_mail/enter_code_controller_spec.rb": 1.753072032, - "spec/controllers/idv/by_mail/enter_code_rate_limited_controller_spec.rb": 0.025159325, - "spec/controllers/idv/by_mail/letter_enqueued_controller_spec.rb": 0.099750185, - "spec/controllers/idv/by_mail/request_letter_controller_spec.rb": 1.832365389, - "spec/controllers/idv/cancellations_controller_spec.rb": 0.599050406, - "spec/controllers/idv/capture_doc_status_controller_spec.rb": 0.5643532, - "spec/controllers/idv/document_capture_controller_spec.rb": 1.061676401, - "spec/controllers/idv/enter_password_controller_spec.rb": 14.474655213, - "spec/controllers/idv/forgot_password_controller_spec.rb": 1.025874008, - "spec/controllers/idv/how_to_verify_controller_spec.rb": 1.69953763, - "spec/controllers/idv/hybrid_handoff_controller_spec.rb": 1.302934187, - "spec/controllers/idv/hybrid_mobile/capture_complete_controller_spec.rb": 0.10192155, - "spec/controllers/idv/hybrid_mobile/document_capture_controller_spec.rb": 0.50421861, - "spec/controllers/idv/hybrid_mobile/entry_controller_spec.rb": 0.45823780199999997, - "spec/controllers/idv/image_uploads_controller_spec.rb": 2.050153519, - "spec/controllers/idv/in_person/address_controller_spec.rb": 0.289246136, - "spec/controllers/idv/in_person/public/usps_locations_controller_spec.rb": 0.013211371, - "spec/controllers/idv/in_person/ready_to_verify_controller_spec.rb": 0.346724315, - "spec/controllers/idv/in_person/ssn_controller_spec.rb": 0.788697978, - "spec/controllers/idv/in_person/usps_locations_controller_spec.rb": 0.281765318, - "spec/controllers/idv/in_person/verify_info_controller_spec.rb": 1.662446458, - "spec/controllers/idv/in_person_controller_spec.rb": 0.13918271399999999, - "spec/controllers/idv/link_sent_controller_spec.rb": 0.705938689, - "spec/controllers/idv/mail_only_warning_controller_spec.rb": 0.177133666, - "spec/controllers/idv/not_verified_controller_spec.rb": 0.02629403, - "spec/controllers/idv/otp_verification_controller_spec.rb": 0.978947015, - "spec/controllers/idv/personal_key_controller_spec.rb": 3.993090256, - "spec/controllers/idv/phone_controller_spec.rb": 2.739062942, - "spec/controllers/idv/phone_errors_controller_spec.rb": 1.186515328, - "spec/controllers/idv/please_call_controller_spec.rb": 0.402589284, - "spec/controllers/idv/resend_otp_controller_spec.rb": 0.112116724, - "spec/controllers/idv/session_errors_controller_spec.rb": 1.51535563, - "spec/controllers/idv/sessions_controller_spec.rb": 0.311827093, - "spec/controllers/idv/ssn_controller_spec.rb": 1.090721906, - "spec/controllers/idv/unavailable_controller_spec.rb": 0.09594209, - "spec/controllers/idv/verify_info_controller_spec.rb": 1.859152371, - "spec/controllers/idv/welcome_controller_spec.rb": 0.697436561, - "spec/controllers/idv_controller_spec.rb": 1.557145838, - "spec/controllers/mfa_confirmation_controller_spec.rb": 0.043800517, - "spec/controllers/no_js_controller_spec.rb": 0.044441837, - "spec/controllers/openid_connect/authorization_controller_spec.rb": 3.100645089, - "spec/controllers/openid_connect/certs_controller_spec.rb": 0.012968163000000001, - "spec/controllers/openid_connect/configuration_controller_spec.rb": 0.017740734, - "spec/controllers/openid_connect/logout_controller_spec.rb": 1.820553805, - "spec/controllers/openid_connect/token_controller_spec.rb": 0.197711151, - "spec/controllers/openid_connect/user_info_controller_spec.rb": 0.268022405, - "spec/controllers/pages_controller_spec.rb": 0.03985833, - "spec/controllers/password_capture_controller_spec.rb": 0.15952855999999999, - "spec/controllers/reactivate_account_controller_spec.rb": 0.158634061, - "spec/controllers/redirect/contact_controller_spec.rb": 0.010527234, - "spec/controllers/redirect/help_center_controller_spec.rb": 0.049856886, - "spec/controllers/redirect/policy_controller_spec.rb": 0.021819049, - "spec/controllers/redirect/return_to_sp_controller_spec.rb": 0.060487280000000004, - "spec/controllers/risc/configuration_controller_spec.rb": 0.015577766, - "spec/controllers/risc/security_events_controller_spec.rb": 0.960804126, - "spec/controllers/robots_controller_spec.rb": 0.036798572, - "spec/controllers/saml_completion_controller_spec.rb": 0.080527671, - "spec/controllers/saml_idp_controller_spec.rb": 13.252747148, - "spec/controllers/saml_post_controller_spec.rb": 0.023359291999999997, - "spec/controllers/saml_signed_message_spec.rb": 0.45216066, - "spec/controllers/service_provider_controller_spec.rb": 0.136142919, - "spec/controllers/sign_out_controller_spec.rb": 0.055972219000000004, - "spec/controllers/sign_up/cancellations_controller_spec.rb": 0.379994596, - "spec/controllers/sign_up/completions_controller_spec.rb": 1.050519027, - "spec/controllers/sign_up/email_confirmations_controller_spec.rb": 0.260212197, - "spec/controllers/sign_up/emails_controller_spec.rb": 0.021736203000000003, - "spec/controllers/sign_up/passwords_controller_spec.rb": 0.193331791, - "spec/controllers/sign_up/registrations_controller_spec.rb": 1.108157707, - "spec/controllers/test/device_profiling_controller_spec.rb": 0.015300786, - "spec/controllers/test/piv_cac_authentication_test_subject_controller_spec.rb": 0.053694975, - "spec/controllers/test/push_notification_controller_spec.rb": 0.020633775, - "spec/controllers/test/telephony_controller_spec.rb": 0.035691507, - "spec/controllers/two_factor_authentication/backup_code_verification_controller_spec.rb": 1.357317493, - "spec/controllers/two_factor_authentication/options_controller_spec.rb": 0.320551445, - "spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb": 3.800247859, - "spec/controllers/two_factor_authentication/personal_key_verification_controller_spec.rb": 2.222927799, - "spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb": 0.887428007, - "spec/controllers/two_factor_authentication/sms_opt_in_controller_spec.rb": 0.468790335, - "spec/controllers/two_factor_authentication/totp_verification_controller_spec.rb": 1.045914731, - "spec/controllers/two_factor_authentication/webauthn_verification_controller_spec.rb": 0.535550223, - "spec/controllers/users/authorization_confirmation_controller_spec.rb": 0.24234835100000002, - "spec/controllers/users/backup_code_setup_controller_spec.rb": 2.381568546, - "spec/controllers/users/delete_controller_spec.rb": 2.023922431, - "spec/controllers/users/edit_phone_controller_spec.rb": 0.160727942, - "spec/controllers/users/email_confirmations_controller_spec.rb": 0.962355863, - "spec/controllers/users/email_language_controller_spec.rb": 0.176201922, - "spec/controllers/users/emails_controller_spec.rb": 0.501662487, - "spec/controllers/users/forget_all_browsers_controller_spec.rb": 0.868301585, - "spec/controllers/users/passwords_controller_spec.rb": 1.528562277, - "spec/controllers/users/personal_keys_controller_spec.rb": 0.367099234, - "spec/controllers/users/phone_setup_controller_spec.rb": 0.1945905, - "spec/controllers/users/piv_cac_authentication_setup_controller_spec.rb": 0.41133564300000003, - "spec/controllers/users/piv_cac_controller_spec.rb": 1.614625026, - "spec/controllers/users/piv_cac_login_controller_spec.rb": 0.905617639, - "spec/controllers/users/please_call_controller_spec.rb": 0.024389169, - "spec/controllers/users/reset_passwords_controller_spec.rb": 2.9820644119999997, - "spec/controllers/users/rules_of_use_controller_spec.rb": 0.736546637, - "spec/controllers/users/second_mfa_reminder_controller_spec.rb": 0.35694374, - "spec/controllers/users/service_provider_revoke_controller_spec.rb": 0.41751663, - "spec/controllers/users/sessions_controller_spec.rb": 1.828338492, - "spec/controllers/users/totp_setup_controller_spec.rb": 4.172781665, - "spec/controllers/users/two_factor_authentication_controller_spec.rb": 2.607998243, - "spec/controllers/users/two_factor_authentication_setup_controller_spec.rb": 0.330374863, - "spec/controllers/users/verify_password_controller_spec.rb": 0.607437423, - "spec/controllers/users/verify_personal_key_controller_spec.rb": 0.69586349, - "spec/controllers/users/webauthn_controller_spec.rb": 1.06087655, - "spec/controllers/users/webauthn_setup_controller_spec.rb": 0.425723621, - "spec/controllers/vendor_outage_controller_spec.rb": 0.051875081, - "spec/decorators/device_decorator_spec.rb": 0.013538226, - "spec/decorators/email_context_spec.rb": 0.056371708000000006, - "spec/decorators/event_decorator_spec.rb": 0.076969524, - "spec/decorators/mfa_context_spec.rb": 0.948471254, - "spec/decorators/null_service_provider_session_spec.rb": 0.014170594, - "spec/decorators/service_provider_session_spec.rb": 0.25982451, - "spec/features/accessibility/idv_pages_spec.rb": 400.524217465, - "spec/features/accessibility/static_pages_spec.rb": 159.219971627, - "spec/features/accessibility/user_pages_spec.rb": 340.969188517, - "spec/features/accessibility/visitor_pages_spec.rb": 78.069183985, - "spec/features/account/backup_codes_spec.rb": 34.699571989, - "spec/features/account/device_spec.rb": 6.218126534, - "spec/features/account/unphishable_badge_spec.rb": 12.268543149, - "spec/features/account_connected_apps_spec.rb": 12.855188139, - "spec/features/account_creation/multiple_browsers_spec.rb": 22.440832156, - "spec/features/account_creation/sp_return_log_spec.rb": 7.25880585, - "spec/features/account_email_language_spec.rb": 19.112047255, - "spec/features/account_history_spec.rb": 6.36031272, - "spec/features/account_reset/cancel_request_spec.rb": 8.729409577, - "spec/features/account_reset/delete_account_spec.rb": 22.392151613, - "spec/features/account_reset/pending_request_spec.rb": 7.81645737, - "spec/features/device_tracking_spec.rb": 12.541077246, - "spec/features/event_disavowal_spec.rb": 79.922611362, - "spec/features/ialmax/saml_sign_in_spec.rb": 47.619967982, - "spec/features/idv/account_creation_spec.rb": 66.883900286, - "spec/features/idv/analytics_spec.rb": 120.759953365, - "spec/features/idv/cancel_spec.rb": 42.340881031, - "spec/features/idv/clearing_and_restarting_spec.rb": 95.138771824, - "spec/features/idv/confirm_start_over_spec.rb": 25.305869511, - "spec/features/idv/doc_auth/address_step_spec.rb": 66.294649054, - "spec/features/idv/doc_auth/agreement_spec.rb": 8.354679674, - "spec/features/idv/doc_auth/document_capture_spec.rb": 211.422389668, - "spec/features/idv/doc_auth/how_to_verify_spec.rb": 155.923033533, - "spec/features/idv/doc_auth/hybrid_handoff_spec.rb": 289.921547216, - "spec/features/idv/doc_auth/link_sent_spec.rb": 7.374022459, - "spec/features/idv/doc_auth/redo_document_capture_spec.rb": 188.341289206, - "spec/features/idv/doc_auth/ssn_step_spec.rb": 8.583274686, - "spec/features/idv/doc_auth/test_credentials_spec.rb": 32.838562527, - "spec/features/idv/doc_auth/verify_info_step_spec.rb": 158.054939737, - "spec/features/idv/doc_auth/welcome_spec.rb": 6.431612154, - "spec/features/idv/end_to_end_idv_spec.rb": 79.056458102, - "spec/features/idv/gpo_disabled_spec.rb": 12.054657406, - "spec/features/idv/hybrid_mobile/entry_spec.rb": 23.909151897, - "spec/features/idv/hybrid_mobile/hybrid_mobile_spec.rb": 101.206064609, - "spec/features/idv/in_person_spec.rb": 271.681242637, - "spec/features/idv/in_person_threatmetrix_spec.rb": 222.678133562, - "spec/features/idv/outage_spec.rb": 160.891045624, - "spec/features/idv/pending_profile_password_reset_spec.rb": 22.52099269, - "spec/features/idv/phone_errors_spec.rb": 34.898636235, - "spec/features/idv/phone_input_spec.rb": 19.070615213, - "spec/features/idv/phone_otp_rate_limiting_spec.rb": 37.045515308, - "spec/features/idv/proof_address_rate_limit_spec.rb": 29.699207112, - "spec/features/idv/proofing_components_spec.rb": 23.595737502, - "spec/features/idv/puerto_rican_address_spec.rb": 19.825968246, - "spec/features/idv/sp_handoff_spec.rb": 164.205342891, - "spec/features/idv/sp_requested_attributes_spec.rb": 83.718638787, - "spec/features/idv/step_up_spec.rb": 23.890075547000002, - "spec/features/idv/steps/enter_code_step_spec.rb": 185.512586849, - "spec/features/idv/steps/enter_password_step_spec.rb": 65.639209619, - "spec/features/idv/steps/forgot_password_step_spec.rb": 31.976117539, - "spec/features/idv/steps/in_person/address_spec.rb": 90.337909759, - "spec/features/idv/steps/in_person/ssn_spec.rb": 88.402827686, - "spec/features/idv/steps/in_person/state_id_step_spec.rb": 154.681572204, - "spec/features/idv/steps/in_person/verify_info_spec.rb": 50.216010021, - "spec/features/idv/steps/in_person_opt_in_ipp_spec.rb": 118.081252722, - "spec/features/idv/steps/phone_otp_verification_step_spec.rb": 44.297095028, - "spec/features/idv/steps/phone_step_spec.rb": 151.484392181, - "spec/features/idv/steps/request_letter_step_spec.rb": 66.306199791, - "spec/features/idv/threat_metrix_pending_spec.rb": 66.6056212, - "spec/features/idv/uak_password_spec.rb": 11.391714787, - "spec/features/legacy_passwords_spec.rb": 25.519410284, - "spec/features/load_testing/email_sign_up_spec.rb": 6.513755005, - "spec/features/multi_factor_authentication/mfa_cta_spec.rb": 28.624375954999998, - "spec/features/multiple_emails/add_email_spec.rb": 105.338822195, - "spec/features/multiple_emails/email_management_spec.rb": 46.087181081, - "spec/features/multiple_emails/reset_password_spec.rb": 13.297406733999999, - "spec/features/multiple_emails/sign_in_spec.rb": 20.180097726, - "spec/features/multiple_emails/sp_sign_in_spec.rb": 29.082887674, - "spec/features/new_device_tracking_spec.rb": 21.605382544, - "spec/features/openid_connect/authorization_confirmation_spec.rb": 60.647489524, - "spec/features/openid_connect/openid_connect_spec.rb": 368.374558794, - "spec/features/openid_connect/phishing_resistant_required_spec.rb": 119.030759219, - "spec/features/openid_connect/redirect_uri_validation_spec.rb": 62.568418803, - "spec/features/openid_connect/vtr_spec.rb": 46.877199172, - "spec/features/phone/add_phone_spec.rb": 70.118708291, - "spec/features/phone/confirmation_spec.rb": 202.880041808, - "spec/features/phone/default_phone_selection_spec.rb": 33.68962708, - "spec/features/phone/edit_phone_spec.rb": 21.15221282, - "spec/features/phone/rate_limiting_spec.rb": 93.738608051, - "spec/features/phone/remove_phone_spec.rb": 12.755412848, - "spec/features/remember_device/cookie_expiration_spec.rb": 6.613393484, - "spec/features/remember_device/phone_spec.rb": 58.912246182000004, - "spec/features/remember_device/revocation_spec.rb": 16.576057982000002, - "spec/features/remember_device/session_expiration_spec.rb": 7.247529893, - "spec/features/remember_device/signed_in_sp_expiration_spec.rb": 7.417510308, - "spec/features/remember_device/sp_expiration_spec.rb": 381.448698376, - "spec/features/remember_device/totp_spec.rb": 87.159373321, - "spec/features/remember_device/user_opted_preference_spec.rb": 48.690277973, - "spec/features/remember_device/webauthn_spec.rb": 170.089454785, - "spec/features/reports/authorization_count_spec.rb": 150.542863773, - "spec/features/reports/monthly_gpo_letter_requests_report_spec.rb": 24.144084017, - "spec/features/reports/sp_active_users_report_spec.rb": 13.224093622, - "spec/features/saml/authorization_confirmation_spec.rb": 48.917328724, - "spec/features/saml/ial1/account_creation_spec.rb": 19.778076604, - "spec/features/saml/ial1_sso_spec.rb": 97.712817176, - "spec/features/saml/ial2_sso_spec.rb": 59.500055001, - "spec/features/saml/multiple_endpoints_spec.rb": 49.275084098, - "spec/features/saml/phishing_resistant_required_spec.rb": 106.194826323, - "spec/features/saml/redirect_uri_validation_spec.rb": 6.882692069, - "spec/features/saml/saml_logout_spec.rb": 52.309243805, - "spec/features/saml/saml_relay_state_spec.rb": 27.570887361, - "spec/features/saml/saml_spec.rb": 216.539236575, - "spec/features/saml/vtr_spec.rb": 69.687786852, - "spec/features/session/decryption_spec.rb": 6.208507372, - "spec/features/session/timeout_spec.rb": 18.415623821, - "spec/features/sign_in/banned_users_spec.rb": 21.881721389, - "spec/features/sign_in/remember_device_default_spec.rb": 18.973885447, - "spec/features/sign_in/sp_return_log_spec.rb": 6.80897156, - "spec/features/sign_in/two_factor_options_spec.rb": 88.960506615, - "spec/features/sp_cost_tracking_spec.rb": 60.331751413999996, - "spec/features/two_factor_authentication/backup_code_sign_up_spec.rb": 34.255965238, - "spec/features/two_factor_authentication/change_factor_spec.rb": 28.737628739, - "spec/features/two_factor_authentication/multiple_mfa_sign_up_spec.rb": 77.96113926700001, - "spec/features/two_factor_authentication/multiple_tabs_spec.rb": 16.969332487000003, - "spec/features/two_factor_authentication/second_mfa_reminder_spec.rb": 35.481062309, - "spec/features/two_factor_authentication/sign_in_spec.rb": 205.30546327, - "spec/features/two_factor_authentication/sign_in_via_personal_key_spec.rb": 14.129882104, - "spec/features/users/password_recovery_via_recovery_code_spec.rb": 88.54615693400001, - "spec/features/users/password_reset_with_pending_profile_spec.rb": 13.02321878, - "spec/features/users/piv_cac_management_spec.rb": 53.820110058, - "spec/features/users/profile_recovery_for_gpo_verified_spec.rb": 15.22970207, - "spec/features/users/regenerate_personal_key_spec.rb": 14.195315069, - "spec/features/users/sign_in_spec.rb": 590.235647938, - "spec/features/users/sign_out_spec.rb": 6.55310008, - "spec/features/users/sign_up_spec.rb": 341.786603374, - "spec/features/users/totp_management_spec.rb": 47.913102443, - "spec/features/users/user_edit_spec.rb": 6.24525188, - "spec/features/users/user_profile_spec.rb": 90.694508149, - "spec/features/users/verify_profile_spec.rb": 26.324349808999997, - "spec/features/visitors/bad_password_spec.rb": 6.968267626, - "spec/features/visitors/email_confirmation_spec.rb": 40.599530325, - "spec/features/visitors/email_language_preference_spec.rb": 12.589077003, - "spec/features/visitors/i18n_spec.rb": 76.965838797, - "spec/features/visitors/js_disabled_spec.rb": 12.364394536999999, - "spec/features/visitors/navigation_spec.rb": 6.979634912, - "spec/features/visitors/password_recovery_spec.rb": 129.673313593, - "spec/features/visitors/resend_email_confirmation_spec.rb": 32.146619018, - "spec/features/visitors/set_password_spec.rb": 56.935047334, - "spec/features/visitors/sign_up_with_email_spec.rb": 52.245417928, - "spec/features/webauthn/hidden_spec.rb": 66.645417311, - "spec/features/webauthn/management_spec.rb": 191.186688546, - "spec/features/webauthn/sign_in_spec.rb": 54.288047839, - "spec/features/webauthn/sign_up_spec.rb": 41.419748805, - "spec/forms/add_user_email_form_spec.rb": 0.408957357, - "spec/forms/backup_code_verification_form_spec.rb": 0.570277567, - "spec/forms/delete_user_email_form_spec.rb": 0.249346889, - "spec/forms/edit_phone_form_spec.rb": 0.287158847, - "spec/forms/event_disavowal/password_reset_from_disavowal_form_spec.rb": 1.055141004, - "spec/forms/frontend_error_form_spec.rb": 0.015221361999999999, - "spec/forms/gpo_verify_form_spec.rb": 1.563394851, - "spec/forms/idv/api_image_upload_form_spec.rb": 1.808721987, - "spec/forms/idv/doc_pii_form_spec.rb": 0.035732968, - "spec/forms/idv/how_to_verify_form_spec.rb": 0.0056930520000000005, - "spec/forms/idv/in_person/address_form_spec.rb": 0.02837131, - "spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb": 0.15022038599999998, - "spec/forms/idv/phone_form_spec.rb": 0.890145537, - "spec/forms/idv/ssn_format_form_spec.rb": 0.016630573, - "spec/forms/idv/state_id_form_spec.rb": 0.781076877, - "spec/forms/new_phone_form_spec.rb": 1.707191838, - "spec/forms/openid_connect_authorize_form_spec.rb": 0.379057357, - "spec/forms/openid_connect_logout_form_spec.rb": 0.500754398, - "spec/forms/openid_connect_token_form_spec.rb": 1.380918888, - "spec/forms/otp_delivery_selection_form_spec.rb": 0.074394072, - "spec/forms/otp_verification_form_spec.rb": 0.27104259799999997, - "spec/forms/password_form_spec.rb": 0.392122143, - "spec/forms/password_reset_email_form_spec.rb": 0.058864025, - "spec/forms/personal_key_form_spec.rb": 0.056853338, - "spec/forms/register_user_email_form_spec.rb": 5.443354863, - "spec/forms/reset_password_form_spec.rb": 0.524946576, - "spec/forms/security_event_form_spec.rb": 2.410126515, - "spec/forms/totp_setup_form_spec.rb": 0.138449987, - "spec/forms/totp_verification_form_spec.rb": 0.041568689, - "spec/forms/two_factor_authentication/auth_app_delete_form_spec.rb": 0.273542051, - "spec/forms/two_factor_authentication/auth_app_update_form_spec.rb": 0.421813644, - "spec/forms/two_factor_authentication/piv_cac_delete_form_spec.rb": 0.142472036, - "spec/forms/two_factor_authentication/piv_cac_update_form_spec.rb": 0.446488939, - "spec/forms/two_factor_authentication/webauthn_delete_form_spec.rb": 0.167046587, - "spec/forms/two_factor_authentication/webauthn_update_form_spec.rb": 0.239911189, - "spec/forms/two_factor_login_options_form_spec.rb": 0.024543351999999997, - "spec/forms/two_factor_options_form_spec.rb": 0.224293254, - "spec/forms/update_email_language_form_spec.rb": 0.040698505999999995, - "spec/forms/update_user_password_form_spec.rb": 0.7994554150000001, - "spec/forms/user_piv_cac_login_form_spec.rb": 0.041605795, - "spec/forms/user_piv_cac_setup_form_spec.rb": 0.177411424, - "spec/forms/user_piv_cac_verification_form_spec.rb": 0.13521930100000001, - "spec/forms/verify_password_form_spec.rb": 0.122169049, - "spec/forms/verify_personal_key_form_spec.rb": 0.22866430799999998, - "spec/forms/webauthn_setup_form_spec.rb": 0.671864577, - "spec/forms/webauthn_verification_form_spec.rb": 0.37177999500000003, - "spec/forms/webauthn_visit_form_spec.rb": 0.174828645, - "spec/helpers/application_helper_spec.rb": 0.029502259, - "spec/helpers/go_back_helper_spec.rb": 0.020271932, - "spec/helpers/link_helper_spec.rb": 0.057524373000000004, - "spec/helpers/locale_helper_spec.rb": 0.065929115, - "spec/helpers/script_helper_spec.rb": 0.046288575, - "spec/helpers/session_timeout_warning_helper_spec.rb": 0.018613145, - "spec/helpers/stylesheet_helper_spec.rb": 0.0184357, - "spec/i18n_spec.rb": 62.222188353, - "spec/jobs/address_proofing_job_spec.rb": 0.177372477, - "spec/jobs/application_job_spec.rb": 0.003102806, - "spec/jobs/fraud_rejection_daily_job_spec.rb": 0.058432481, - "spec/jobs/get_usps_proofing_results_job_spec.rb": 34.927121495, - "spec/jobs/get_usps_ready_proofing_results_job_spec.rb": 0.457810499, - "spec/jobs/get_usps_waiting_proofing_results_job_spec.rb": 0.401648864, - "spec/jobs/gpo_daily_job_spec.rb": 0.063321705, - "spec/jobs/gpo_expiration_job_spec.rb": 1.739461991, - "spec/jobs/gpo_reminder_job_spec.rb": 1.255608685, - "spec/jobs/heartbeat_job_spec.rb": 0.004656268999999999, - "spec/jobs/in_person/email_reminder_job_spec.rb": 1.066867158, - "spec/jobs/in_person/enrollments_ready_for_status_check/batch_processor_spec.rb": 0.038580359, - "spec/jobs/in_person/enrollments_ready_for_status_check/enrollment_pipeline_spec.rb": 0.293638811, - "spec/jobs/in_person/enrollments_ready_for_status_check/error_reporter_spec.rb": 0.02217716, - "spec/jobs/in_person/enrollments_ready_for_status_check/sqs_batch_wrapper_spec.rb": 0.009632402, - "spec/jobs/in_person/enrollments_ready_for_status_check_job_spec.rb": 0.060148196, - "spec/jobs/in_person/send_proofing_notification_job_spec.rb": 1.649564458, - "spec/jobs/job_helpers/encryption_helper_spec.rb": 0.002966504, - "spec/jobs/job_helpers/s3_helper_spec.rb": 0.09713454399999999, - "spec/jobs/job_helpers/stale_job_helper_spec.rb": 0.00906523, - "spec/jobs/job_helpers/timer_spec.rb": 0.010504045, - "spec/jobs/phone_number_opt_out_sync_job_spec.rb": 0.055110575, - "spec/jobs/reports/agreement_summary_report_spec.rb": 0.10027196199999999, - "spec/jobs/reports/authentication_report_spec.rb": 0.319581862, - "spec/jobs/reports/base_report_spec.rb": 0.003961237, - "spec/jobs/reports/combined_invoice_supplement_report_spec.rb": 0.668601519, - "spec/jobs/reports/daily_auths_report_spec.rb": 0.157494414, - "spec/jobs/reports/daily_dropoffs_report_spec.rb": 0.201434989, - "spec/jobs/reports/daily_registration_report_spec.rb": 0.115311703, - "spec/jobs/reports/deleted_user_accounts_report_spec.rb": 0.157806494, - "spec/jobs/reports/duplicate_ssn_report_spec.rb": 0.12819984, - "spec/jobs/reports/fraud_metrics_report_spec.rb": 0.80146474, - "spec/jobs/reports/identity_verification_report_spec.rb": 0.25829625900000003, - "spec/jobs/reports/month_helper_spec.rb": 0.005659563, - "spec/jobs/reports/monthly_key_metrics_report_spec.rb": 2.131342262, - "spec/jobs/reports/quarterly_account_stats_spec.rb": 0.253023136, - "spec/jobs/reports/query_helpers_spec.rb": 0.006210011, - "spec/jobs/reports/sp_active_users_report_spec.rb": 0.058667245, - "spec/jobs/reports/sp_issuer_user_counts_report_spec.rb": 1.110421265, - "spec/jobs/reports/sp_user_counts_report_spec.rb": 0.041394729, - "spec/jobs/reports/total_ial2_costs_report_spec.rb": 0.026743681, - "spec/jobs/reports/total_monthly_auths_report_spec.rb": 0.036839005, - "spec/jobs/reports/verification_failures_report_spec.rb": 0.506193154, - "spec/jobs/resolution_proofing_job_spec.rb": 1.03393522, - "spec/jobs/risc_delivery_job_spec.rb": 0.227593075, - "spec/jobs/threat_metrix_js_verification_job_spec.rb": 0.566265667, - "spec/jobs/usps_auth_token_refresh_job_spec.rb": 0.072393501, - "spec/lib/aamva_test_spec.rb": 0.277350427, - "spec/lib/ab_test_bucket_spec.rb": 0.030418871, - "spec/lib/action_account_spec.rb": 1.940464092, - "spec/lib/analytics_events_documenter_spec.rb": 0.095563576, - "spec/lib/app_artifacts_spec.rb": 0.0154493, - "spec/lib/asset_sources_spec.rb": 0.041293749, - "spec/lib/aws/ses_spec.rb": 0.027422362999999998, - "spec/lib/cleanup/destroy_unused_providers_spec.rb": 0.13101216300000001, - "spec/lib/cleanup/destroyable_records_spec.rb": 1.033094218, - "spec/lib/custom_devise_failure_app_spec.rb": 0.007110006, - "spec/lib/data_pull_spec.rb": 0.514344897, - "spec/lib/data_requests/deployed/create_email_addresses_report_spec.rb": 0.021875114, - "spec/lib/data_requests/deployed/create_mfa_configurations_report_spec.rb": 0.137205181, - "spec/lib/data_requests/deployed/create_user_events_report_spec.rb": 0.16613341, - "spec/lib/data_requests/deployed/create_user_report_spec.rb": 0.104330638, - "spec/lib/data_requests/deployed/lookup_shared_device_users_spec.rb": 0.040944294, - "spec/lib/data_requests/deployed/lookup_user_by_uuid_spec.rb": 0.051217637999999996, - "spec/lib/data_requests/local/fetch_cloudwatch_logs_spec.rb": 0.032611659, - "spec/lib/data_requests/local/write_cloudwatch_logs_spec.rb": 0.018001158, - "spec/lib/data_requests/local/write_user_events_spec.rb": 0.002932493, - "spec/lib/data_requests/local/write_user_info_spec.rb": 0.0073122859999999994, - "spec/lib/deploy/activate_spec.rb": 0.130359556, - "spec/lib/env_irb_prompt_spec.rb": 0.014722305, - "spec/lib/feature_management_spec.rb": 0.167786243, - "spec/lib/fingerprinter_spec.rb": 0.004422423, - "spec/lib/good_job_connection_pool_size_spec.rb": 0.009521424, - "spec/lib/headers_filter_spec.rb": 0.002880899, - "spec/lib/identity_config_spec.rb": 0.014680624, - "spec/lib/identity_cors_spec.rb": 0.020375224, - "spec/lib/identity_job_log_subscriber_spec.rb": 0.13580811199999998, - "spec/lib/linters/analytics_event_name_linter_spec.rb": 0.241655773, - "spec/lib/linters/errors_add_linter_spec.rb": 0.057718765, - "spec/lib/linters/image_size_linter_spec.rb": 0.03607776, - "spec/lib/linters/localized_validation_message_linter_spec.rb": 0.251222145, - "spec/lib/linters/mail_later_linter_spec.rb": 0.268482445, - "spec/lib/linters/redirect_back_linter_spec.rb": 0.283404649, - "spec/lib/linters/url_options_linter_spec.rb": 0.27056153, - "spec/lib/makefile_help_parser_spec.rb": 0.08808437899999999, - "spec/lib/otp_code_generator_spec.rb": 0.011050418, - "spec/lib/pinpoint_supported_countries_spec.rb": 0.081803822, - "spec/lib/pwned_password_downloader_spec.rb": 1.387597305, - "spec/lib/query_tracker_spec.rb": 0.055154008000000004, - "spec/lib/reporting/authentication_report_spec.rb": 0.037117777, - "spec/lib/reporting/cloudwatch_client_spec.rb": 0.6222667749999999, - "spec/lib/reporting/cloudwatch_query_quoting_spec.rb": 0.006657922, - "spec/lib/reporting/cloudwatch_query_time_slice_spec.rb": 0.014184254, - "spec/lib/reporting/command_line_options_spec.rb": 0.094639163, - "spec/lib/reporting/drop_off_report_spec.rb": 0.021747173, - "spec/lib/reporting/fraud_metrics_lg99_report_spec.rb": 0.023305548, - "spec/lib/reporting/identity_verification_report_spec.rb": 0.067139648, - "spec/lib/reporting/mfa_report_spec.rb": 0.022848067, - "spec/lib/reporting/proofing_rate_report_spec.rb": 0.6659369239999999, - "spec/lib/reporting/unknown_progress_bar_spec.rb": 0.198502399, - "spec/lib/script_base_spec.rb": 0.008173643, - "spec/lib/session_encryptor_spec.rb": 0.027928885, - "spec/lib/tasks/dev_rake_spec.rb": 11.575212669, - "spec/lib/tasks/partners_rake_spec.rb": 0.6116177279999999, - "spec/lib/tasks/rotate_rake_spec.rb": 0.156971251, - "spec/lib/telephony/alert_sender_spec.rb": 0.028348544, - "spec/lib/telephony/otp_sender_spec.rb": 0.087203222, - "spec/lib/telephony/pinpoint/aws_credential_builder_spec.rb": 0.011223707999999999, - "spec/lib/telephony/pinpoint/opt_out_manager_spec.rb": 0.041619217, - "spec/lib/telephony/pinpoint/sms_sender_spec.rb": 0.093209754, - "spec/lib/telephony/pinpoint/voice_sender_spec.rb": 0.045581324, - "spec/lib/telephony/pinpoint_configuration_spec.rb": 0.004341745, - "spec/lib/telephony/response_spec.rb": 0.014896501, - "spec/lib/telephony/telephony_spec.rb": 0.056795005, - "spec/lib/telephony/test/call_spec.rb": 0.015382118, - "spec/lib/telephony/test/message_spec.rb": 0.013249722, - "spec/lib/telephony/test/sms_sender_spec.rb": 0.021231682, - "spec/lib/telephony/test/voice_sender_spec.rb": 0.00814898, - "spec/lib/telephony/util_spec.rb": 0.002068139, - "spec/lib/utf8_sanitizer_spec.rb": 0.01651653, - "spec/mailers/previews/report_mailer_preview_spec.rb": 0.30617089, - "spec/mailers/previews/user_mailer_preview_spec.rb": 0.436258625, - "spec/mailers/report_mailer_spec.rb": 0.162377576, - "spec/mailers/user_mailer_spec.rb": 5.28707743, - "spec/models/account_reset_request_spec.rb": 0.023222587, - "spec/models/agency_identity_spec.rb": 0.016319101000000003, - "spec/models/agency_spec.rb": 0.038672688, - "spec/models/agreements/iaa_gtc_spec.rb": 0.190352738, - "spec/models/agreements/iaa_order_spec.rb": 0.530451241, - "spec/models/agreements/iaa_spec.rb": 0.250649102, - "spec/models/agreements/integration_spec.rb": 0.299244555, - "spec/models/agreements/integration_status_spec.rb": 0.067778543, - "spec/models/agreements/integration_usage_spec.rb": 0.213980318, - "spec/models/agreements/partner_account_spec.rb": 0.134034401, - "spec/models/agreements/partner_account_status_spec.rb": 0.04679106, - "spec/models/anonymous_user_spec.rb": 0.013140365, - "spec/models/backup_code_configuration_spec.rb": 1.080967119, - "spec/models/concerns/user_otp_methods_spec.rb": 0.002315406, - "spec/models/deleted_user_spec.rb": 0.056235585000000005, - "spec/models/device_spec.rb": 0.088760925, - "spec/models/disposable_email_domain_spec.rb": 0.029114304, - "spec/models/document_capture_session_spec.rb": 0.062324612, - "spec/models/email_address_spec.rb": 0.205370523, - "spec/models/event_spec.rb": 0.024375754, - "spec/models/gpo_confirmation_code_spec.rb": 0.209187569, - "spec/models/in_person_enrollment_spec.rb": 3.026731625, - "spec/models/notification_phone_configuration_spec.rb": 0.175053094, - "spec/models/null_identity_spec.rb": 0.003246844, - "spec/models/phone_configuration_spec.rb": 0.098402587, - "spec/models/phone_number_opt_out_spec.rb": 0.089811708, - "spec/models/profile_spec.rb": 2.597170422, - "spec/models/service_provider_identity_spec.rb": 0.43729154200000003, - "spec/models/service_provider_spec.rb": 0.362331054, - "spec/models/sp_return_log_spec.rb": 0.011473927, - "spec/models/suspended_email_spec.rb": 0.096061753, - "spec/models/user_spec.rb": 5.408602589, - "spec/models/webauthn_configuration_spec.rb": 0.27363906, - "spec/policies/backup_code_policy_spec.rb": 0.033608674000000005, - "spec/policies/idv/flow_policy_spec.rb": 1.26933236, - "spec/policies/idv/step_info_spec.rb": 0.011080786, - "spec/policies/pending_profile_policy_spec.rb": 0.11200104999999999, - "spec/policies/service_provider_mfa_policy_spec.rb": 0.554392425, - "spec/policies/two_factor_authentication/piv_cac_policy_spec.rb": 0.049018076, - "spec/policies/user_mfa_policy_spec.rb": 0.143154876, - "spec/policies/webauthn_login_option_policy_spec.rb": 0.052732521000000004, - "spec/presenters/account_reset/pending_presenter_spec.rb": 0.27899515799999997, - "spec/presenters/account_show_presenter_spec.rb": 0.141523418, - "spec/presenters/cancellation_presenter_spec.rb": 0.012314761, - "spec/presenters/completions_presenter_spec.rb": 0.863888584, - "spec/presenters/confirm_delete_email_presenter_spec.rb": 0.018258934, - "spec/presenters/eastern_time_presenter_spec.rb": 0.003215037, - "spec/presenters/idv/by_mail/request_letter_presenter_spec.rb": 0.187849265, - "spec/presenters/idv/cancellations_presenter_spec.rb": 0.017655248, - "spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb": 0.463714596, - "spec/presenters/idv/in_person/verification_results_email_presenter_spec.rb": 0.583995383, - "spec/presenters/idv/welcome_presenter_spec.rb": 0.138001943, - "spec/presenters/image_upload_response_presenter_spec.rb": 0.03974008, - "spec/presenters/max_attempts_reached_presenter_spec.rb": 0.013709529, - "spec/presenters/mfa_confirmation_presenter_spec.rb": 0.017513206, - "spec/presenters/navigation_presenter_spec.rb": 0.120995304, - "spec/presenters/openid_connect_certs_presenter_spec.rb": 0.010123569, - "spec/presenters/openid_connect_configuration_presenter_spec.rb": 0.005372491, - "spec/presenters/openid_connect_user_info_presenter_spec.rb": 1.016218769, - "spec/presenters/piv_cac_authentication_setup_presenter_spec.rb": 0.041700976, - "spec/presenters/piv_cac_error_presenter_spec.rb": 0.009099908, - "spec/presenters/risc_configuration_presenter_spec.rb": 0.004180428, - "spec/presenters/saml_request_presenter_spec.rb": 0.037490791, - "spec/presenters/session_timeout_modal_presenter_spec.rb": 0.0036859049999999997, - "spec/presenters/setup_presenter_spec.rb": 0.050595828, - "spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb": 0.0065710809999999995, - "spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb": 0.007392983, - "spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb": 0.008759165, - "spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb": 0.026051217, - "spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb": 0.009345421999999999, - "spec/presenters/two_factor_auth_code/sms_opt_in_presenter_spec.rb": 0.0033037, - "spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb": 0.042212505, - "spec/presenters/two_factor_authentication/piv_cac_edit_presenter_spec.rb": 0.015832524, - "spec/presenters/two_factor_authentication/set_up_auth_app_selection_presenter_spec.rb": 0.063439118, - "spec/presenters/two_factor_authentication/set_up_backup_code_selection_presenter_spec.rb": 0.01323434, - "spec/presenters/two_factor_authentication/set_up_phone_selection_presenter_spec.rb": 0.159994161, - "spec/presenters/two_factor_authentication/set_up_piv_cac_selection_presenter_spec.rb": 0.127478387, - "spec/presenters/two_factor_authentication/set_up_selection_presenter_spec.rb": 0.182182694, - "spec/presenters/two_factor_authentication/set_up_webauthn_platform_selection_presenter_spec.rb": 0.086003388, - "spec/presenters/two_factor_authentication/set_up_webauthn_selection_presenter_spec.rb": 0.098411673, - "spec/presenters/two_factor_authentication/sign_in_auth_app_selection_presenter_spec.rb": 0.045723115, - "spec/presenters/two_factor_authentication/sign_in_personal_key_selection_presenter_spec.rb": 0.032577894, - "spec/presenters/two_factor_authentication/sign_in_phone_selection_presenter_spec.rb": 0.197325411, - "spec/presenters/two_factor_authentication/sign_in_piv_cac_selection_presenter_spec.rb": 0.041566326, - "spec/presenters/two_factor_authentication/sign_in_selection_presenter_spec.rb": 0.05940448, - "spec/presenters/two_factor_authentication/sign_in_webauthn_platform_selection_presenter_spec.rb": 0.044229674999999996, - "spec/presenters/two_factor_authentication/sign_in_webauthn_selection_presenter_spec.rb": 0.058926626999999995, - "spec/presenters/two_factor_authentication/webauthn_edit_presenter_spec.rb": 0.104862714, - "spec/presenters/two_factor_login_options_presenter_spec.rb": 1.889059754, - "spec/presenters/two_factor_options_presenter_spec.rb": 0.223456954, - "spec/presenters/utc_time_presenter_spec.rb": 0.004652388, - "spec/presenters/webauthn_setup_presenter_spec.rb": 0.12735378, - "spec/requests/acuant_sdk_spec.rb": 0.064832383, - "spec/requests/api_cors_spec.rb": 0.503751117, - "spec/requests/bimi_logo_spec.rb": 0.015249587, - "spec/requests/csp_spec.rb": 0.398094262, - "spec/requests/headers_spec.rb": 1.123476972, - "spec/requests/i18n_spec.rb": 0.147515005, - "spec/requests/invalid_encoding_spec.rb": 0.267384456, - "spec/requests/invalid_sign_in_params_spec.rb": 0.104803911, - "spec/requests/not_acceptable_spec.rb": 0.8963419699999999, - "spec/requests/openid_connect_authorize_spec.rb": 0.758346376, - "spec/requests/openid_connect_cors_spec.rb": 0.441104458, - "spec/requests/openid_connect_userinfo_spec.rb": 0.083944827, - "spec/requests/page_not_found_spec.rb": 0.101805757, - "spec/requests/rack_attack_spec.rb": 6.63276852, - "spec/requests/redis_down_spec.rb": 0.784469186, - "spec/requests/saml_requests_spec.rb": 0.23320622100000002, - "spec/requests/secure_cookies_spec.rb": 0.135054473, - "spec/routing/gpo_verification_routing_spec.rb": 0.243128543, - "spec/scripts/changelog_check_spec.rb": 0.041211413, - "spec/services/access_token_verifier_spec.rb": 0.042866865, - "spec/services/account_reset/cancel_request_for_user_spec.rb": 0.404007184, - "spec/services/account_reset/cancel_spec.rb": 1.81140115, - "spec/services/account_reset/create_request_spec.rb": 0.736617945, - "spec/services/account_reset/delete_account_spec.rb": 0.777563709, - "spec/services/account_reset/find_pending_request_for_user_spec.rb": 0.191326919, - "spec/services/account_reset/grant_request_spec.rb": 0.352893261, - "spec/services/account_reset/grant_requests_and_send_emails_spec.rb": 2.923099003, - "spec/services/account_reset/notify_user_of_request_cancellation_spec.rb": 0.586178948, - "spec/services/account_reset/validate_granted_token_spec.rb": 0.0804498, - "spec/services/agency_identity_linker_spec.rb": 0.36576595700000003, - "spec/services/agency_seeder_spec.rb": 0.054038976, - "spec/services/agreements/iaa_gtc_seeder_spec.rb": 0.032068655, - "spec/services/agreements/iaa_order_seeder_spec.rb": 0.061352839, - "spec/services/agreements/integration_seeder_spec.rb": 0.07150300100000001, - "spec/services/agreements/integration_status_seeder_spec.rb": 0.035227578999999995, - "spec/services/agreements/partner_account_seeder_spec.rb": 0.035044623, - "spec/services/agreements/partner_account_status_seeder_spec.rb": 0.032940923999999996, - "spec/services/analytics_spec.rb": 0.158349338, - "spec/services/attribute_asserter_spec.rb": 2.119665706, - "spec/services/auth_methods_session_spec.rb": 0.052228654, - "spec/services/authn_context_resolver_spec.rb": 0.038500963, - "spec/services/backup_code_generator_spec.rb": 1.664010508, - "spec/services/banned_user_resolver_spec.rb": 0.120057766, - "spec/services/barcode_outputter_spec.rb": 0.013327784, - "spec/services/browser_cache_spec.rb": 0.006812836, - "spec/services/browser_support_spec.rb": 0.064244896, - "spec/services/calendar_service_spec.rb": 0.067362997, - "spec/services/cloud_front_header_parser_spec.rb": 0.009927247, - "spec/services/completions_decider_spec.rb": 0.013809412, - "spec/services/database_health_checker_spec.rb": 0.007959346, - "spec/services/date_parser_spec.rb": 0.012081597, - "spec/services/db/add_document_verification_and_selfie_costs_spec.rb": 0.023622446, - "spec/services/db/identity/sp_active_user_counts_spec.rb": 0.149014691, - "spec/services/db/identity/sp_user_counts_spec.rb": 0.097654248, - "spec/services/db/monthly_auth_count/total_monthly_auth_counts_spec.rb": 0.054719874999999994, - "spec/services/db/monthly_sp_auth_count/total_monthly_auth_counts_within_iaa_window_spec.rb": 0.11481995, - "spec/services/db/monthly_sp_auth_count/unique_monthly_auth_counts_by_iaa_spec.rb": 0.166178012, - "spec/services/deleted_accounts_report_spec.rb": 0.153109316, - "spec/services/device_name_spec.rb": 0.02349435, - "spec/services/displayable_pii_formatter_spec.rb": 0.756141828, - "spec/services/doc_auth/classification_concern_spec.rb": 0.0076765, - "spec/services/doc_auth/error_generator_spec.rb": 0.078275728, - "spec/services/doc_auth/lexis_nexis/issuer_types_spec.rb": 0.004991563, - "spec/services/doc_auth/lexis_nexis/lexis_nexis_client_spec.rb": 0.257999407, - "spec/services/doc_auth/lexis_nexis/request_spec.rb": 0.698865946, - "spec/services/doc_auth/lexis_nexis/requests/true_id_request_spec.rb": 0.793308304, - "spec/services/doc_auth/lexis_nexis/responses/true_id_response_spec.rb": 0.847130754, - "spec/services/doc_auth/lexis_nexis/result_codes_spec.rb": 0.0065029219999999995, - "spec/services/doc_auth/mock/doc_auth_mock_client_spec.rb": 0.091004896, - "spec/services/doc_auth/mock/result_response_spec.rb": 0.090963687, - "spec/services/doc_auth/processed_alert_to_log_alert_formatter_spec.rb": 0.006743682, - "spec/services/doc_auth/response_spec.rb": 0.046031955, - "spec/services/doc_auth/selfie_concern_spec.rb": 0.012236038999999999, - "spec/services/doc_auth_router_spec.rb": 0.068510551, - "spec/services/document_capture_session_result_spec.rb": 0.014263158, - "spec/services/duration_parser_spec.rb": 0.03994816, - "spec/services/email_confirmation_token_validator_spec.rb": 0.138131901, - "spec/services/email_normalizer_spec.rb": 0.018197143, - "spec/services/encrypted_attribute_spec.rb": 0.015154285, - "spec/services/encrypted_document_storage/document_writer_spec.rb": 0.049495607000000004, - "spec/services/encrypted_document_storage/local_storage_spec.rb": 0.002799886, - "spec/services/encrypted_document_storage/s3_storage_spec.rb": 0.090938453, - "spec/services/encrypted_redis_struct_storage_spec.rb": 0.029994763, - "spec/services/encryption/aes_cipher_spec.rb": 0.019088573, - "spec/services/encryption/aes_cipher_v2_spec.rb": 0.011197159, - "spec/services/encryption/contextless_kms_client_spec.rb": 0.129129766, - "spec/services/encryption/encryptors/aes_encryptor_spec.rb": 0.013608953, - "spec/services/encryption/encryptors/aes_encryptor_v2_spec.rb": 0.006894687, - "spec/services/encryption/encryptors/attribute_encryptor_spec.rb": 0.01936426, - "spec/services/encryption/encryptors/background_proofing_arg_encryptor_spec.rb": 0.0076894979999999995, - "spec/services/encryption/encryptors/pii_encryptor_spec.rb": 0.064455892, - "spec/services/encryption/kms_client_spec.rb": 0.102429491, - "spec/services/encryption/kms_logger_spec.rb": 0.006753904, - "spec/services/encryption/password_verifier_spec.rb": 0.097191006, - "spec/services/encryption/uak_password_verifier_spec.rb": 0.234193864, - "spec/services/encryption/user_access_key_spec.rb": 0.101379258, - "spec/services/event_disavowal/disavow_event_spec.rb": 0.023470788, - "spec/services/event_disavowal/find_disavowed_event_spec.rb": 0.049241803, - "spec/services/event_disavowal/validate_disavowed_event_spec.rb": 0.067173739, - "spec/services/forget_all_browsers_spec.rb": 0.011561315, - "spec/services/form_response_spec.rb": 0.168827418, - "spec/services/fraud_review_check_spec.rb": 0.567918975, - "spec/services/frontend_error_logger_spec.rb": 0.007538298, - "spec/services/frontend_logger_spec.rb": 0.017847903, - "spec/services/funnel/registration/add_mfa_spec.rb": 0.055801356, - "spec/services/funnel/registration/total_registered_count_spec.rb": 0.09591248100000001, - "spec/services/gpo_confirmation_exporter_spec.rb": 0.026133645, - "spec/services/gpo_confirmation_maker_spec.rb": 0.732707154, - "spec/services/gpo_confirmation_spec.rb": 0.148170715, - "spec/services/gpo_confirmation_uploader_spec.rb": 0.0765325, - "spec/services/gpo_daily_test_sender_spec.rb": 0.055063275, - "spec/services/gpo_reminder_sender_spec.rb": 5.465761324, - "spec/services/health_check_summary_spec.rb": 0.02238702, - "spec/services/iaa_reporting_helper_spec.rb": 0.24519170399999998, - "spec/services/ial_context_spec.rb": 0.359158434, - "spec/services/id_token_builder_spec.rb": 0.396614825, - "spec/services/identity_linker_spec.rb": 0.360894076, - "spec/services/idv/agent_spec.rb": 0.54187422, - "spec/services/idv/analytics_events_enhancer_spec.rb": 0.180789831, - "spec/services/idv/cancel_verification_attempt_spec.rb": 0.200926481, - "spec/services/idv/data_url_image_spec.rb": 0.012763101, - "spec/services/idv/doc_auth_form_response_spec.rb": 0.018365977, - "spec/services/idv/duplicate_ssn_finder_spec.rb": 0.194031343, - "spec/services/idv/gpo_mail_spec.rb": 0.293290461, - "spec/services/idv/in_person/completion_survey_sender_spec.rb": 0.688178528, - "spec/services/idv/in_person/enrollment_code_formatter_spec.rb": 0.002306767, - "spec/services/idv/in_person_config_spec.rb": 0.045468899, - "spec/services/idv/lexis_nexis_instant_verify_spec.rb": 0.011971513, - "spec/services/idv/phone_confirmation_session_spec.rb": 0.057789412, - "spec/services/idv/phone_step_spec.rb": 0.756566234, - "spec/services/idv/profile_logging_spec.rb": 0.156385267, - "spec/services/idv/profile_maker_spec.rb": 0.87491369, - "spec/services/idv/proofing_components_logging_spec.rb": 0.030638744, - "spec/services/idv/send_phone_confirmation_otp_spec.rb": 0.14092956, - "spec/services/idv/session_spec.rb": 1.123712929, - "spec/services/idv/steps/in_person/state_id_step_spec.rb": 0.312862221, - "spec/services/key_rotator/attribute_encryption_spec.rb": 0.071387167, - "spec/services/key_rotator/hmac_fingerprinter_spec.rb": 0.144463689, - "spec/services/marketing_site_spec.rb": 0.096559731, - "spec/services/multi_health_checker_spec.rb": 0.008281237, - "spec/services/openid_connect_attribute_scoper_spec.rb": 0.029424507, - "spec/services/otp_preference_updater_spec.rb": 0.039001213, - "spec/services/otp_rate_limiter_spec.rb": 0.09950488, - "spec/services/out_of_band_session_accessor_spec.rb": 0.025155616, - "spec/services/outage_status_spec.rb": 0.065546577, - "spec/services/outbound_health_checker_spec.rb": 0.095283148, - "spec/services/parse_controller_from_referer_spec.rb": 0.004081943, - "spec/services/personal_key_generator_spec.rb": 0.320518645, - "spec/services/phone_formatter_spec.rb": 0.030768014, - "spec/services/phone_number_capabilities_spec.rb": 0.104795072, - "spec/services/phone_recaptcha_form_spec.rb": 0.065012571, - "spec/services/pii/attributes_spec.rb": 0.026663207, - "spec/services/pii/cacher_spec.rb": 0.328829647, - "spec/services/pii/fingerprinter_spec.rb": 0.026187948, - "spec/services/pii/re_encryptor_spec.rb": 0.158219621, - "spec/services/piv_cac/check_config_spec.rb": 0.010669115, - "spec/services/piv_cac_service_spec.rb": 0.072753656, - "spec/services/profanity_detector_spec.rb": 0.020804294, - "spec/services/proofing/aamva/applicant_spec.rb": 0.006690804, - "spec/services/proofing/aamva/authentication_client_spec.rb": 0.13169465600000002, - "spec/services/proofing/aamva/hmac_secret_spec.rb": 0.001817262, - "spec/services/proofing/aamva/proofer_spec.rb": 0.5496046960000001, - "spec/services/proofing/aamva/request/authentication_token_request_spec.rb": 0.100905294, - "spec/services/proofing/aamva/request/security_token_request_spec.rb": 1.65988698, - "spec/services/proofing/aamva/request/verification_request_spec.rb": 0.467303573, - "spec/services/proofing/aamva/response/authentication_token_response_spec.rb": 0.021799893, - "spec/services/proofing/aamva/response/security_token_response_spec.rb": 0.058725577, - "spec/services/proofing/aamva/response/verification_response_spec.rb": 0.190327619, - "spec/services/proofing/aamva/soap_error_handler_spec.rb": 0.047000427, - "spec/services/proofing/aamva/verification_client_spec.rb": 0.431892492, - "spec/services/proofing/ddp_result_spec.rb": 0.05300291, - "spec/services/proofing/lexis_nexis/date_formatter_spec.rb": 0.006551868, - "spec/services/proofing/lexis_nexis/ddp/proofing_spec.rb": 0.098047944, - "spec/services/proofing/lexis_nexis/ddp/response_redacter_spec.rb": 0.013778961999999999, - "spec/services/proofing/lexis_nexis/ddp/verification_request_spec.rb": 0.01033032, - "spec/services/proofing/lexis_nexis/instant_verify/check_to_attribute_mapper_spec.rb": 0.01536234, - "spec/services/proofing/lexis_nexis/instant_verify/proofing_spec.rb": 0.074653052, - "spec/services/proofing/lexis_nexis/instant_verify/verification_request_spec.rb": 0.045073548, - "spec/services/proofing/lexis_nexis/phone_finder/proofing_spec.rb": 0.081665305, - "spec/services/proofing/lexis_nexis/phone_finder/verification_request_spec.rb": 0.042939092, - "spec/services/proofing/lexis_nexis/request_signer_spec.rb": 0.003526134, - "spec/services/proofing/lexis_nexis/response_spec.rb": 0.032233968, - "spec/services/proofing/lexis_nexis/verification_error_parser_spec.rb": 0.010533642, - "spec/services/proofing/mock/address_mock_client_spec.rb": 0.008349254, - "spec/services/proofing/mock/ddp_mock_client_spec.rb": 0.024581086, - "spec/services/proofing/mock/device_profiling_backend_spec.rb": 0.007017731, - "spec/services/proofing/mock/resolution_mock_client_spec.rb": 0.025421784, - "spec/services/proofing/mock/state_id_mock_client_spec.rb": 0.009301385, - "spec/services/proofing/resolution/progressive_proofer_spec.rb": 0.464269037, - "spec/services/proofing/resolution/result_adjudicator_spec.rb": 0.003687639, - "spec/services/proofing_session_async_result_spec.rb": 0.003641958, - "spec/services/push_notification/account_disabled_event_spec.rb": 0.016155626, - "spec/services/push_notification/account_enabled_event_spec.rb": 0.019470743, - "spec/services/push_notification/account_purged_event_spec.rb": 0.019583228, - "spec/services/push_notification/email_changed_event_spec.rb": 0.01611741, - "spec/services/push_notification/http_push_spec.rb": 0.831622646, - "spec/services/push_notification/identifier_recycled_event_spec.rb": 0.0188503, - "spec/services/push_notification/mfa_limit_account_locked_event_spec.rb": 0.022761877, - "spec/services/push_notification/password_reset_event_spec.rb": 0.020032432, - "spec/services/push_notification/recovery_activated_event_spec.rb": 0.022576222, - "spec/services/push_notification/reproof_completed_event_spec.rb": 0.016853535, - "spec/services/pwned_passwords/lookup_password_spec.rb": 0.006573716, - "spec/services/random_phrase_spec.rb": 0.022642781, - "spec/services/rate_limiter_spec.rb": 0.09342118, - "spec/services/reactivate_account_session_spec.rb": 0.486191592, - "spec/services/recaptcha_enterprise_validator_spec.rb": 0.184840574, - "spec/services/recaptcha_mock_validator_spec.rb": 0.031384338, - "spec/services/recaptcha_form_spec.rb": 0.207950607, - "spec/services/redis_rate_limiter_spec.rb": 0.045844488, - "spec/services/remember_device_cookie_spec.rb": 0.144756036, - "spec/services/reporting/account_deletion_rate_report_spec.rb": 0.287856172, - "spec/services/reporting/account_reuse_report_spec.rb": 0.9000213079999999, - "spec/services/reporting/active_users_count_report_spec.rb": 0.088385885, - "spec/services/reporting/agency_and_sp_report_spec.rb": 0.679552379, - "spec/services/reporting/total_user_count_report_spec.rb": 0.222069611, - "spec/services/request_password_reset_spec.rb": 4.45089363, - "spec/services/reset_user_password_spec.rb": 1.671282633, - "spec/services/revoke_service_provider_consent_spec.rb": 0.022909288, - "spec/services/saml_endpoint_spec.rb": 0.023283803, - "spec/services/saml_request_validator_spec.rb": 0.09216159, - "spec/services/secure_headers_allow_list_spec.rb": 0.011386704, - "spec/services/send_sign_up_email_confirmation_spec.rb": 1.755544044, - "spec/services/service_provider_request_proxy_spec.rb": 0.01622378, - "spec/services/service_provider_seeder_spec.rb": 1.366270739, - "spec/services/service_provider_updater_spec.rb": 0.509046377, - "spec/services/sp_return_url_resolver_spec.rb": 0.03600467, - "spec/services/ssn_formatter_spec.rb": 0.025627023999999998, - "spec/services/store_sp_metadata_in_session_spec.rb": 0.060319963, - "spec/services/string_redacter_spec.rb": 0.002607431, - "spec/services/time_service_spec.rb": 0.002098037, - "spec/services/update_user_spec.rb": 0.196161848, - "spec/services/uri_service_spec.rb": 0.014046402, - "spec/services/user_alerts/alert_user_about_account_verified_spec.rb": 0.582390847, - "spec/services/user_alerts/alert_user_about_new_device_spec.rb": 0.515773101, - "spec/services/user_alerts/alert_user_about_password_change_spec.rb": 0.719658679, - "spec/services/user_alerts/alert_user_about_personal_key_sign_in_spec.rb": 0.422288519, - "spec/services/user_event_creator_spec.rb": 0.243293538, - "spec/services/user_profiles_encryptor_spec.rb": 0.491440941, - "spec/services/user_seeder_spec.rb": 3.099578013, - "spec/services/user_session_context_spec.rb": 0.02049394, - "spec/services/usps_in_person_proofing/enrollment_helper_spec.rb": 3.666574176, - "spec/services/usps_in_person_proofing/proofer_spec.rb": 0.422952164, - "spec/services/usps_in_person_proofing/transliterable_validator_spec.rb": 0.055329128, - "spec/services/usps_in_person_proofing/transliterator_spec.rb": 0.104575785, - "spec/services/uuid_reporter_spec.rb": 0.235114514, - "spec/services/vot/parser_spec.rb": 0.01225766, - "spec/services/x509/attribute_spec.rb": 0.004028274, - "spec/services/x509/attributes_spec.rb": 0.021253309999999997, - "spec/support/fake_analytics_spec.rb": 0.216367954, - "spec/svg_spec.rb": 0.184881591, - "spec/views/account_reset/cancel/show.html.erb_spec.rb": 0.01146571, - "spec/views/account_reset/confirm_delete_account/show.html.erb_spec.rb": 0.103194652, - "spec/views/account_reset/confirm_request/show.html.erb_spec.rb": 0.006832895, - "spec/views/account_reset/delete_account/show.html.erb_spec.rb": 0.018556052, - "spec/views/account_reset/recovery_options/show.html.erb_spec.rb": 0.015203886, - "spec/views/account_reset/request/show.html.erb_spec.rb": 0.059719678, - "spec/views/account_reset/user_mailer/email_confirmation_instructions.html.erb_spec.rb": 0.078708421, - "spec/views/account_reset/user_mailer/unconfirmed_email_instructions.html.erb_spec.rb": 0.055492584, - "spec/views/accounts/_auth_apps.html.erb_spec.rb": 0.067852976, - "spec/views/accounts/_nav_auth.html.erb_spec.rb": 0.062008406, - "spec/views/accounts/_piv_cac.html.erb_spec.rb": 0.041955853, - "spec/views/accounts/_webauthn_platform.html.erb_spec.rb": 0.054671087, - "spec/views/accounts/_webauthn_roaming.html.erb_spec.rb": 0.057961288, - "spec/views/accounts/connected_accounts/show.html.erb_spec.rb": 0.067727669, - "spec/views/accounts/history/show.html.erb_spec.rb": 0.03755835, - "spec/views/accounts/show.html.erb_spec.rb": 0.715741287, - "spec/views/accounts/two_factor_authentication/show.html.erb_spec.rb": 0.146433696, - "spec/views/devise/passwords/edit.html.erb_spec.rb": 0.127819708, - "spec/views/devise/passwords/new.html.erb_spec.rb": 0.118971421, - "spec/views/devise/sessions/new.html.erb_spec.rb": 0.270431867, - "spec/views/forgot_password/show.html.erb_spec.rb": 0.028951375, - "spec/views/idv/activated.html.erb_spec.rb": 0.016488117, - "spec/views/idv/address/new.html.erb_spec.rb": 0.128253532, - "spec/views/idv/agreement/show.html.erb_spec.rb": 0.016663845, - "spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb": 0.23435176, - "spec/views/idv/by_mail/letter_enqueued/show.html.erb_spec.rb": 0.038009976, - "spec/views/idv/by_mail/request_letter/index.html.erb_spec.rb": 0.26685013, - "spec/views/idv/cancellations/destroy.html.erb_spec.rb": 0.024250406000000002, - "spec/views/idv/cancellations/new.html.erb_spec.rb": 0.10084421, - "spec/views/idv/doc_auth/_cancel.html.erb_spec.rb": 0.01536376, - "spec/views/idv/enter_password/new.html.erb_spec.rb": 0.145613549, - "spec/views/idv/how_to_verify/show.html.erb_spec.rb": 0.06975224299999999, - "spec/views/idv/hybrid_handoff/show.html.erb_spec.rb": 0.367447694, - "spec/views/idv/in_person/ready_to_verify/show.html.erb_spec.rb": 0.42234777, - "spec/views/idv/in_person/state_id.html.erb_spec.rb": 0.060198794, - "spec/views/idv/not_verified/show.html.erb_spec.rb": 0.031046148, - "spec/views/idv/phone/new.html.erb_spec.rb": 0.110345934, - "spec/views/idv/phone_errors/_warning.html.erb_spec.rb": 0.122232927, - "spec/views/idv/phone_errors/failure.html.erb_spec.rb": 0.051271847, - "spec/views/idv/phone_errors/jobfail.html.erb_spec.rb": 0.051917660000000004, - "spec/views/idv/phone_errors/timeout.html.erb_spec.rb": 0.045964688, - "spec/views/idv/phone_errors/warning.html.erb_spec.rb": 0.136050171, - "spec/views/idv/please_call/show.html.erb_spec.rb": 0.023905286, - "spec/views/idv/session_errors/exception.html.erb_spec.rb": 0.028203752, - "spec/views/idv/session_errors/failure.html.erb_spec.rb": 0.030229488, - "spec/views/idv/session_errors/rate_limited.html.erb_spec.rb": 0.028934392, - "spec/views/idv/session_errors/state_id_warning.html.erb_spec.rb": 0.027618554, - "spec/views/idv/session_errors/warning.html.erb_spec.rb": 0.040664195, - "spec/views/idv/shared/_back.html.erb_spec.rb": 0.043200543, - "spec/views/idv/shared/_document_capture.html.erb_spec.rb": 0.053396866, - "spec/views/idv/shared/_error.html.erb_spec.rb": 0.10026349700000001, - "spec/views/idv/shared/ssn.html.erb_spec.rb": 0.108712495, - "spec/views/idv/unavailable/show.html.erb_spec.rb": 0.038706783, - "spec/views/idv/welcome/show.html.erb_spec.rb": 0.072492322, - "spec/views/layouts/application.html.erb_spec.rb": 0.181810886, - "spec/views/layouts/user_mailer.html.erb_spec.rb": 0.160486178, - "spec/views/mfa_confirmation/show.html.erb_spec.rb": 0.177892356, - "spec/views/partials/multi_factor_authentication/_mfa_selection.html.erb_spec.rb": 0.961047557, - "spec/views/partials/personal_key/_key.html.erb_spec.rb": 0.040423253, - "spec/views/phone_setup/index.html.erb_spec.rb": 0.357824791, - "spec/views/phone_setup/spam_protection.html.erb_spec.rb": 0.140607612, - "spec/views/reactivate_account/index.html.erb_spec.rb": 0.022087099, - "spec/views/shared/_address.html.erb_spec.rb": 0.009125079000000001, - "spec/views/shared/_banner.html.erb_spec.rb": 0.016586914, - "spec/views/shared/_cancel_or_back_to_options.html.erb_spec.rb": 0.04090975, - "spec/views/shared/_email_languages.html.erb_spec.rb": 0.026710344, - "spec/views/shared/_footer_lite.html.erb_spec.rb": 0.031520007, - "spec/views/shared/_masked_text.html.erb_spec.rb": 0.017155243, - "spec/views/shared/_nav_branded.html.erb_spec.rb": 0.035385235, - "spec/views/shared/_nav_lite.html.erb_spec.rb": 0.008139896, - "spec/views/shared/_personal_key.html.erb_spec.rb": 0.020106215, - "spec/views/shared/_troubleshooting_options.html.erb_spec.rb": 0.047114257, - "spec/views/sign_up/completions/show.html.erb_spec.rb": 0.299756537, - "spec/views/sign_up/email_resend/new.html.erb_spec.rb": 0.020966154, - "spec/views/sign_up/emails/show.html.erb_spec.rb": 0.070197868, - "spec/views/sign_up/passwords/new.html.erb_spec.rb": 0.089123068, - "spec/views/sign_up/registrations/new.html.erb_spec.rb": 0.12383461800000001, - "spec/views/two_factor_authentication/options/index.html.erb_spec.rb": 0.276060379, - "spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb": 0.400530816, - "spec/views/two_factor_authentication/personal_key_verification/show.html.erb_spec.rb": 0.125453177, - "spec/views/two_factor_authentication/sms_opt_in/error.html.erb_spec.rb": 0.043743327, - "spec/views/two_factor_authentication/sms_opt_in/new.html.erb_spec.rb": 0.056321676, - "spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb": 0.34714979, - "spec/views/two_factor_authentication/webauthn_verification/show.html.erb_spec.rb": 0.160544737, - "spec/views/users/auth_app/edit.html.erb_spec.rb": 0.124356251, - "spec/views/users/backup_code_setup/create.html.erb_spec.rb": 1.5857027320000001, - "spec/views/users/backup_code_setup/index.html.erb_spec.rb": 2.009631899, - "spec/views/users/backup_code_setup/reminder.html.erb_spec.rb": 0.042355157, - "spec/views/users/delete/show.html.erb_spec.rb": 0.147076078, - "spec/views/users/edit_phone/remove_phone.html.erb_spec.rb": 0.081215677, - "spec/views/users/emails/verify.html.erb_spec.rb": 0.075181361, - "spec/views/users/passwords/edit.html.erb_spec.rb": 0.044212112, - "spec/views/users/piv_cac/edit.html.erb_spec.rb": 0.114270765, - "spec/views/users/piv_cac_authentication_setup/new.html.erb_spec.rb": 0.051375968, - "spec/views/users/please_call/show.html.erb_spec.rb": 0.021086055, - "spec/views/users/second_mfa_reminder/new.html.erb_spec.rb": 0.019871509000000002, - "spec/views/users/shared/_otp_delivery_preference_selection.html.erb_spec.rb": 0.055971916999999996, - "spec/views/users/totp_setup/new.html.erb_spec.rb": 0.206275254, - "spec/views/users/two_factor_authentication_setup/index.html.erb_spec.rb": 0.50501483, - "spec/views/users/webauthn/edit.html.erb_spec.rb": 0.138436272, - "spec/views/users/webauthn_setup/new.html.erb_spec.rb": 0.164423869, - "spec/views/vendor_outage/show.html.erb_spec.rb": 0.020259679 + "spec/bin/aamva-test-cert_spec.rb": 0.005711084, + "spec/bin/oncall/download-piv-certs_spec.rb": 0.08010334300000001, + "spec/bin/oncall/email-deliveries_spec.rb": 0.012503934, + "spec/bin/oncall/otp-deliveries_spec.rb": 0.030528747, + "spec/bin/query-cloudwatch_spec.rb": 0.102039041, + "spec/browsers_json_spec.rb": 0.003708873, + "spec/components/accordion_component_spec.rb": 0.014317719, + "spec/components/alert_component_spec.rb": 0.038128681, + "spec/components/alert_icon_component_spec.rb": 0.016766106, + "spec/components/badge_component_spec.rb": 0.021773455, + "spec/components/barcode_component_spec.rb": 0.060692602, + "spec/components/base_component_spec.rb": 0.034148926, + "spec/components/block_link_component_spec.rb": 0.014915106000000001, + "spec/components/button_component_spec.rb": 0.039056414, + "spec/components/captcha_submit_button_component_spec.rb": 0.056813763, + "spec/components/click_observer_component_spec.rb": 0.006200936000000001, + "spec/components/clipboard_button_component_spec.rb": 0.015240257, + "spec/components/countdown_alert_component_spec.rb": 0.029068459, + "spec/components/countdown_component_spec.rb": 0.01378117, + "spec/components/download_button_component_spec.rb": 0.028539783000000003, + "spec/components/flash_component_spec.rb": 0.011639409, + "spec/components/form_link_component_spec.rb": 0.006460792, + "spec/components/icon_component_spec.rb": 0.018375302, + "spec/components/icon_list_component_spec.rb": 0.027430426, + "spec/components/javascript_required_component_spec.rb": 0.03180447, + "spec/components/language_picker_component_spec.rb": 0.015785589, + "spec/components/login_button_component_spec.rb": 0.02475338, + "spec/components/manageable_authenticator_component_spec.rb": 0.201294341, + "spec/components/memorable_date_component_spec.rb": 0.102652669, + "spec/components/modal_component_spec.rb": 0.024225924, + "spec/components/one_time_code_input_component_spec.rb": 0.07518464799999999, + "spec/components/page_footer_component_spec.rb": 0.011486332, + "spec/components/page_heading_component_spec.rb": 0.009963211999999999, + "spec/components/password_confirmation_component_spec.rb": 0.031674232999999996, + "spec/components/password_strength_component_spec.rb": 0.014554666, + "spec/components/password_toggle_component_spec.rb": 0.030588397, + "spec/components/phone_input_component_spec.rb": 0.382938122, + "spec/components/print_button_component_spec.rb": 0.016008109, + "spec/components/process_list_component_spec.rb": 0.021364893, + "spec/components/security_key_image_component_spec.rb": 0.040630633, + "spec/components/spinner_button_component_spec.rb": 0.029567382, + "spec/components/status_page_component_spec.rb": 0.043896694, + "spec/components/step_indicator_component_spec.rb": 0.062364914, + "spec/components/step_indicator_step_component_spec.rb": 0.019202672, + "spec/components/submit_button_component_spec.rb": 0.045169519, + "spec/components/tab_navigation_component_spec.rb": 0.579598855, + "spec/components/tag_component_spec.rb": 0.013251611, + "spec/components/time_component_spec.rb": 0.013520601, + "spec/components/tooltip_component_spec.rb": 0.018201929999999998, + "spec/components/troubleshooting_options_component_spec.rb": 0.018032523, + "spec/components/validated_field_component_spec.rb": 0.027801043, + "spec/components/vendor_outage_alert_component_spec.rb": 0.023410604, + "spec/components/webauthn_input_component_spec.rb": 0.026695588, + "spec/components/webauthn_verify_button_component_spec.rb": 0.015517083, + "spec/config/initializers/ahoy_spec.rb": 0.011581418, + "spec/config/initializers/ext_digest_spec.rb": 0.002204358, + "spec/config/initializers/job_configurations_spec.rb": 0.090365104, + "spec/config/initializers/phonelib_spec.rb": 0.002148434, + "spec/config/initializers/rack_attack_spec.rb": 0.001456636, + "spec/config/initializers/secure_headers_spec.rb": 0.004101348, + "spec/controllers/account_reset/cancel_controller_spec.rb": 0.67029812, + "spec/controllers/account_reset/confirm_delete_account_controller_spec.rb": 0.018517148, + "spec/controllers/account_reset/confirm_request_controller_spec.rb": 0.009723867, + "spec/controllers/account_reset/delete_account_controller_spec.rb": 0.585473638, + "spec/controllers/account_reset/pending_controller_spec.rb": 0.358795661, + "spec/controllers/account_reset/recovery_options_controller_spec.rb": 0.119402722, + "spec/controllers/account_reset/request_controller_spec.rb": 1.385280114, + "spec/controllers/accounts/personal_keys_controller_spec.rb": 0.5218942169999999, + "spec/controllers/accounts_controller_spec.rb": 0.427387093, + "spec/controllers/api/internal/sessions_controller_spec.rb": 0.650514925, + "spec/controllers/api/internal/two_factor_authentication/auth_app_controller_spec.rb": 0.516193144, + "spec/controllers/api/internal/two_factor_authentication/piv_cac_controller_spec.rb": 0.670217585, + "spec/controllers/api/internal/two_factor_authentication/webauthn_controller_spec.rb": 0.707133949, + "spec/controllers/application_controller_spec.rb": 1.158783294, + "spec/controllers/completions_cancellation_controller_spec.rb": 0.033009202, + "spec/controllers/concerns/account_reset_concern_spec.rb": 0.082842979, + "spec/controllers/concerns/api/csrf_token_concern_spec.rb": 0.009475111, + "spec/controllers/concerns/billable_event_trackable_spec.rb": 0.15989465, + "spec/controllers/concerns/forced_reauthentication_concern_spec.rb": 0.007477767999999999, + "spec/controllers/concerns/idv/ab_test_analytics_concern_spec.rb": 0.091197855, + "spec/controllers/concerns/idv/acuant_concern_spec.rb": 0.02766784, + "spec/controllers/concerns/idv/document_capture_concern_spec.rb": 0.020967737, + "spec/controllers/concerns/idv/phone_otp_rate_limitable_spec.rb": 0.020517261, + "spec/controllers/concerns/idv/step_indicator_concern_spec.rb": 0.244531773, + "spec/controllers/concerns/idv/threat_metrix_concern_spec.rb": 0.036305859999999995, + "spec/controllers/concerns/idv_step_concern_spec.rb": 0.589689393, + "spec/controllers/concerns/mfa_setup_concern_spec.rb": 0.254606169, + "spec/controllers/concerns/new_device_concern_spec.rb": 0.144840731, + "spec/controllers/concerns/rate_limit_concern_spec.rb": 0.376622493, + "spec/controllers/concerns/reauthentication_required_concern_spec.rb": 0.152245465, + "spec/controllers/concerns/recaptcha_concern_spec.rb": 0.027767919, + "spec/controllers/concerns/remember_device_concern_spec.rb": 0.089203692, + "spec/controllers/concerns/render_condition_concern_spec.rb": 0.077765708, + "spec/controllers/concerns/second_mfa_reminder_concern_spec.rb": 0.081418176, + "spec/controllers/concerns/sign_in_duration_concern_spec.rb": 0.005898077999999999, + "spec/controllers/concerns/two_factor_authenticatable_methods_spec.rb": 1.562855778, + "spec/controllers/concerns/verify_sp_attributes_concern_spec.rb": 0.40354552, + "spec/controllers/country_support_controller_spec.rb": 0.019992782, + "spec/controllers/event_disavowal_controller_spec.rb": 0.234294175, + "spec/controllers/fake_s3_controller_spec.rb": 0.017836498, + "spec/controllers/forgot_password_controller_spec.rb": 0.01650932, + "spec/controllers/frontend_log_controller_spec.rb": 0.242672109, + "spec/controllers/health/database_controller_spec.rb": 0.029707061, + "spec/controllers/health/health_controller_spec.rb": 0.015678314999999998, + "spec/controllers/health/outbound_controller_spec.rb": 0.045889975, + "spec/controllers/idv/address_controller_spec.rb": 0.693730298, + "spec/controllers/idv/agreement_controller_spec.rb": 1.730342886, + "spec/controllers/idv/by_mail/enter_code_controller_spec.rb": 1.68657768, + "spec/controllers/idv/by_mail/enter_code_rate_limited_controller_spec.rb": 0.048449135, + "spec/controllers/idv/by_mail/letter_enqueued_controller_spec.rb": 0.093656301, + "spec/controllers/idv/by_mail/request_letter_controller_spec.rb": 0.496647605, + "spec/controllers/idv/by_mail/resend_letter_controller_spec.rb": 0.42791229, + "spec/controllers/idv/cancellations_controller_spec.rb": 0.531509647, + "spec/controllers/idv/document_capture_controller_spec.rb": 1.423894164, + "spec/controllers/idv/enter_password_controller_spec.rb": 16.498525471, + "spec/controllers/idv/forgot_password_controller_spec.rb": 0.272830452, + "spec/controllers/idv/how_to_verify_controller_spec.rb": 1.15534855, + "spec/controllers/idv/hybrid_handoff_controller_spec.rb": 1.136690846, + "spec/controllers/idv/hybrid_mobile/capture_complete_controller_spec.rb": 0.101250453, + "spec/controllers/idv/hybrid_mobile/document_capture_controller_spec.rb": 0.44712457099999997, + "spec/controllers/idv/hybrid_mobile/entry_controller_spec.rb": 0.21454695899999998, + "spec/controllers/idv/image_uploads_controller_spec.rb": 1.12183231, + "spec/controllers/idv/in_person/address_controller_spec.rb": 0.36099015, + "spec/controllers/idv/in_person/public/usps_locations_controller_spec.rb": 0.017465357, + "spec/controllers/idv/in_person/ready_to_verify_controller_spec.rb": 0.469676729, + "spec/controllers/idv/in_person/ssn_controller_spec.rb": 0.658927594, + "spec/controllers/idv/in_person/state_id_controller_spec.rb": 0.461944022, + "spec/controllers/idv/in_person/usps_locations_controller_spec.rb": 0.433208455, + "spec/controllers/idv/in_person/verify_info_controller_spec.rb": 0.80775403, + "spec/controllers/idv/in_person_controller_spec.rb": 0.135277565, + "spec/controllers/idv/link_sent_controller_spec.rb": 1.028413659, + "spec/controllers/idv/link_sent_poll_controller_spec.rb": 0.312634872, + "spec/controllers/idv/mail_only_warning_controller_spec.rb": 0.17118360500000002, + "spec/controllers/idv/not_verified_controller_spec.rb": 0.025719022, + "spec/controllers/idv/otp_verification_controller_spec.rb": 1.251239954, + "spec/controllers/idv/personal_key_controller_spec.rb": 3.009900392, + "spec/controllers/idv/phone_controller_spec.rb": 2.349795326, + "spec/controllers/idv/phone_errors_controller_spec.rb": 1.347592754, + "spec/controllers/idv/please_call_controller_spec.rb": 0.361064634, + "spec/controllers/idv/resend_otp_controller_spec.rb": 0.132940528, + "spec/controllers/idv/session_errors_controller_spec.rb": 1.204752507, + "spec/controllers/idv/sessions_controller_spec.rb": 0.262319046, + "spec/controllers/idv/ssn_controller_spec.rb": 0.802577048, + "spec/controllers/idv/unavailable_controller_spec.rb": 0.083019895, + "spec/controllers/idv/verify_info_controller_spec.rb": 1.5723570470000001, + "spec/controllers/idv/welcome_controller_spec.rb": 0.733569312, + "spec/controllers/idv_controller_spec.rb": 1.035833988, + "spec/controllers/mfa_confirmation_controller_spec.rb": 0.037737917, + "spec/controllers/no_js_controller_spec.rb": 0.035663141999999995, + "spec/controllers/openid_connect/authorization_controller_spec.rb": 6.410014805, + "spec/controllers/openid_connect/certs_controller_spec.rb": 0.013962180000000001, + "spec/controllers/openid_connect/configuration_controller_spec.rb": 0.01910903, + "spec/controllers/openid_connect/logout_controller_spec.rb": 1.934997591, + "spec/controllers/openid_connect/token_controller_spec.rb": 0.163643815, + "spec/controllers/openid_connect/user_info_controller_spec.rb": 0.986381647, + "spec/controllers/pages_controller_spec.rb": 0.042509613, + "spec/controllers/password_capture_controller_spec.rb": 0.090163969, + "spec/controllers/reactivate_account_controller_spec.rb": 0.114575472, + "spec/controllers/redirect/contact_controller_spec.rb": 0.008602723, + "spec/controllers/redirect/help_center_controller_spec.rb": 0.028434473000000002, + "spec/controllers/redirect/policy_controller_spec.rb": 0.033649457, + "spec/controllers/redirect/return_to_sp_controller_spec.rb": 0.043961377, + "spec/controllers/risc/configuration_controller_spec.rb": 0.005668967, + "spec/controllers/risc/security_events_controller_spec.rb": 0.628388841, + "spec/controllers/robots_controller_spec.rb": 0.023607193, + "spec/controllers/saml_completion_controller_spec.rb": 0.026521165, + "spec/controllers/saml_idp_controller_spec.rb": 11.008968124, + "spec/controllers/saml_post_controller_spec.rb": 0.087467443, + "spec/controllers/saml_signed_message_spec.rb": 0.470186829, + "spec/controllers/service_provider_controller_spec.rb": 0.098323806, + "spec/controllers/sign_in_security_check_failed_controller_spec.rb": 0.745657308, + "spec/controllers/sign_out_controller_spec.rb": 0.07480991, + "spec/controllers/sign_up/cancellations_controller_spec.rb": 0.32283681399999997, + "spec/controllers/sign_up/completions_controller_spec.rb": 0.959459806, + "spec/controllers/sign_up/email_confirmations_controller_spec.rb": 0.182477791, + "spec/controllers/sign_up/emails_controller_spec.rb": 0.015858718, + "spec/controllers/sign_up/passwords_controller_spec.rb": 0.198967903, + "spec/controllers/sign_up/registrations_controller_spec.rb": 1.0599387599999999, + "spec/controllers/test/device_profiling_controller_spec.rb": 0.012455067, + "spec/controllers/test/piv_cac_authentication_test_subject_controller_spec.rb": 0.029885119999999998, + "spec/controllers/test/push_notification_controller_spec.rb": 0.040769127, + "spec/controllers/test/telephony_controller_spec.rb": 0.027554931, + "spec/controllers/two_factor_authentication/backup_code_verification_controller_spec.rb": 3.068369145, + "spec/controllers/two_factor_authentication/options_controller_spec.rb": 0.411180333, + "spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb": 4.627135267, + "spec/controllers/two_factor_authentication/personal_key_verification_controller_spec.rb": 2.467692971, + "spec/controllers/two_factor_authentication/piv_cac_verification_controller_spec.rb": 2.288378189, + "spec/controllers/two_factor_authentication/sms_opt_in_controller_spec.rb": 0.403679971, + "spec/controllers/two_factor_authentication/totp_verification_controller_spec.rb": 2.148686717, + "spec/controllers/two_factor_authentication/webauthn_verification_controller_spec.rb": 0.93881242, + "spec/controllers/users/authorization_confirmation_controller_spec.rb": 0.207038301, + "spec/controllers/users/backup_code_setup_controller_spec.rb": 2.239969038, + "spec/controllers/users/delete_controller_spec.rb": 1.793560254, + "spec/controllers/users/edit_phone_controller_spec.rb": 0.149579779, + "spec/controllers/users/email_confirmations_controller_spec.rb": 1.068028246, + "spec/controllers/users/email_language_controller_spec.rb": 0.186630363, + "spec/controllers/users/emails_controller_spec.rb": 0.7914280149999999, + "spec/controllers/users/forget_all_browsers_controller_spec.rb": 0.11999863, + "spec/controllers/users/passwords_controller_spec.rb": 1.643901233, + "spec/controllers/users/personal_keys_controller_spec.rb": 0.269159509, + "spec/controllers/users/phone_setup_controller_spec.rb": 0.237143834, + "spec/controllers/users/piv_cac_authentication_setup_controller_spec.rb": 0.433962945, + "spec/controllers/users/piv_cac_controller_spec.rb": 0.533983748, + "spec/controllers/users/piv_cac_login_controller_spec.rb": 3.878017436, + "spec/controllers/users/piv_cac_recommended_controller_spec.rb": 0.236512506, + "spec/controllers/users/please_call_controller_spec.rb": 0.021555488, + "spec/controllers/users/reset_passwords_controller_spec.rb": 2.473284447, + "spec/controllers/users/rules_of_use_controller_spec.rb": 0.47034762, + "spec/controllers/users/second_mfa_reminder_controller_spec.rb": 0.25813589, + "spec/controllers/users/service_provider_revoke_controller_spec.rb": 0.329639579, + "spec/controllers/users/sessions_controller_spec.rb": 1.916744747, + "spec/controllers/users/totp_setup_controller_spec.rb": 3.941429931, + "spec/controllers/users/two_factor_authentication_controller_spec.rb": 2.194237195, + "spec/controllers/users/two_factor_authentication_setup_controller_spec.rb": 0.314437435, + "spec/controllers/users/verify_password_controller_spec.rb": 0.507670722, + "spec/controllers/users/verify_personal_key_controller_spec.rb": 1.185524891, + "spec/controllers/users/webauthn_controller_spec.rb": 0.870016202, + "spec/controllers/users/webauthn_setup_controller_spec.rb": 0.494715375, + "spec/controllers/vendor_outage_controller_spec.rb": 0.044795329, + "spec/decorators/device_decorator_spec.rb": 0.01676874, + "spec/decorators/email_context_spec.rb": 0.044142363000000004, + "spec/decorators/event_decorator_spec.rb": 0.052963656, + "spec/decorators/mfa_context_spec.rb": 0.722670569, + "spec/decorators/null_service_provider_session_spec.rb": 0.008235426, + "spec/decorators/service_provider_session_spec.rb": 0.216270154, + "spec/features/accessibility/idv_pages_spec.rb": 263.12394911499996, + "spec/features/accessibility/static_pages_spec.rb": 171.377619983, + "spec/features/accessibility/user_pages_spec.rb": 280.947755271, + "spec/features/accessibility/visitor_pages_spec.rb": 63.454074027000004, + "spec/features/account/backup_codes_spec.rb": 12.743193308, + "spec/features/account/device_spec.rb": 3.188283294, + "spec/features/account/unphishable_badge_spec.rb": 6.256958497, + "spec/features/account_connected_apps_spec.rb": 6.730660478000001, + "spec/features/account_creation/completions_cancel_spec.rb": 4.285828253, + "spec/features/account_creation/multiple_browsers_spec.rb": 15.706334518, + "spec/features/account_creation/sp_return_log_spec.rb": 2.936407006, + "spec/features/account_email_language_spec.rb": 9.976804733, + "spec/features/account_history_spec.rb": 3.27206991, + "spec/features/account_reset/cancel_request_spec.rb": 4.681505396, + "spec/features/account_reset/delete_account_spec.rb": 9.087350604000001, + "spec/features/account_reset/pending_request_spec.rb": 4.322413698, + "spec/features/device_tracking_spec.rb": 6.410685825, + "spec/features/event_disavowal_spec.rb": 60.530715061, + "spec/features/ialmax/saml_sign_in_spec.rb": 19.833252135000002, + "spec/features/idv/account_creation_spec.rb": 59.205268742, + "spec/features/idv/analytics_spec.rb": 72.769957022, + "spec/features/idv/cancel_spec.rb": 26.467614653000002, + "spec/features/idv/clearing_and_restarting_spec.rb": 60.152458559, + "spec/features/idv/confirm_start_over_spec.rb": 19.279362213, + "spec/features/idv/doc_auth/address_step_spec.rb": 31.726766528, + "spec/features/idv/doc_auth/agreement_spec.rb": 4.814124435, + "spec/features/idv/doc_auth/document_capture_spec.rb": 95.413077217, + "spec/features/idv/doc_auth/how_to_verify_spec.rb": 91.461840627, + "spec/features/idv/doc_auth/hybrid_handoff_spec.rb": 135.825461936, + "spec/features/idv/doc_auth/link_sent_spec.rb": 3.826811017, + "spec/features/idv/doc_auth/redo_document_capture_spec.rb": 139.676228194, + "spec/features/idv/doc_auth/ssn_step_spec.rb": 5.310074613, + "spec/features/idv/doc_auth/test_credentials_spec.rb": 19.123053197, + "spec/features/idv/doc_auth/verify_info_step_spec.rb": 87.851609383, + "spec/features/idv/doc_auth/welcome_spec.rb": 3.256411893, + "spec/features/idv/end_to_end_idv_spec.rb": 77.682479308, + "spec/features/idv/gpo_disabled_spec.rb": 18.945328638, + "spec/features/idv/hybrid_mobile/entry_spec.rb": 14.428675762000001, + "spec/features/idv/hybrid_mobile/hybrid_mobile_spec.rb": 91.697334027, + "spec/features/idv/in_person_spec.rb": 163.978567693, + "spec/features/idv/in_person_threatmetrix_spec.rb": 130.130374352, + "spec/features/idv/outage_spec.rb": 94.681225889, + "spec/features/idv/pending_profile_password_reset_spec.rb": 13.619484132, + "spec/features/idv/phone_errors_spec.rb": 24.109795769999998, + "spec/features/idv/phone_input_spec.rb": 10.1499357, + "spec/features/idv/phone_otp_rate_limiting_spec.rb": 21.141076833, + "spec/features/idv/proof_address_rate_limit_spec.rb": 16.51004467, + "spec/features/idv/proofing_components_spec.rb": 19.853581639, + "spec/features/idv/puerto_rican_address_spec.rb": 13.801380265, + "spec/features/idv/sp_handoff_spec.rb": 116.217622005, + "spec/features/idv/sp_requested_attributes_spec.rb": 62.730454591, + "spec/features/idv/step_up_spec.rb": 17.367537042, + "spec/features/idv/steps/enter_code_step_spec.rb": 88.40172618, + "spec/features/idv/steps/enter_password_step_spec.rb": 40.400518641000005, + "spec/features/idv/steps/forgot_password_step_spec.rb": 19.307482383, + "spec/features/idv/steps/in_person/address_spec.rb": 55.418715901, + "spec/features/idv/steps/in_person/ssn_spec.rb": 56.649732227, + "spec/features/idv/steps/in_person/state_id_step_spec.rb": 95.068530783, + "spec/features/idv/steps/in_person/verify_info_spec.rb": 25.93403229, + "spec/features/idv/steps/in_person_opt_in_ipp_spec.rb": 83.262631951, + "spec/features/idv/steps/phone_otp_verification_step_spec.rb": 21.992105615, + "spec/features/idv/steps/phone_step_spec.rb": 82.284602934, + "spec/features/idv/steps/request_letter_step_spec.rb": 24.803786302, + "spec/features/idv/steps/resend_letter_step_spec.rb": 19.135227683, + "spec/features/idv/threat_metrix_pending_spec.rb": 34.346988092000004, + "spec/features/idv/uak_password_spec.rb": 7.585712903, + "spec/features/idv/verify_by_mail_pending_spec.rb": 6.488418459, + "spec/features/legacy_passwords_spec.rb": 9.464609284, + "spec/features/load_testing/email_sign_up_spec.rb": 3.592622683, + "spec/features/multi_factor_authentication/mfa_cta_spec.rb": 16.442033441, + "spec/features/multiple_emails/add_email_spec.rb": 55.772188947000004, + "spec/features/multiple_emails/email_management_spec.rb": 24.810062260000002, + "spec/features/multiple_emails/reset_password_spec.rb": 7.199133925, + "spec/features/multiple_emails/sign_in_spec.rb": 11.812750749, + "spec/features/multiple_emails/sp_sign_in_spec.rb": 18.824450227, + "spec/features/new_device_tracking_spec.rb": 42.889721895, + "spec/features/openid_connect/authorization_confirmation_spec.rb": 35.221751905, + "spec/features/openid_connect/openid_connect_spec.rb": 210.930789476, + "spec/features/openid_connect/phishing_resistant_required_spec.rb": 65.069577369, + "spec/features/openid_connect/redirect_uri_validation_spec.rb": 33.083073198, + "spec/features/openid_connect/vtr_spec.rb": 35.959905504, + "spec/features/phone/add_phone_spec.rb": 33.650504616, + "spec/features/phone/confirmation_spec.rb": 80.840553105, + "spec/features/phone/default_phone_selection_spec.rb": 14.609860976, + "spec/features/phone/edit_phone_spec.rb": 6.441886299, + "spec/features/phone/rate_limiting_spec.rb": 53.749849666, + "spec/features/phone/remove_phone_spec.rb": 6.546146844000001, + "spec/features/remember_device/cookie_expiration_spec.rb": 3.727722782, + "spec/features/remember_device/phone_spec.rb": 34.34959079, + "spec/features/remember_device/revocation_spec.rb": 10.369318946, + "spec/features/remember_device/session_expiration_spec.rb": 4.016573495, + "spec/features/remember_device/signed_in_sp_expiration_spec.rb": 3.899424162, + "spec/features/remember_device/sp_expiration_spec.rb": 217.556813049, + "spec/features/remember_device/totp_spec.rb": 50.817573517, + "spec/features/remember_device/user_opted_preference_spec.rb": 19.833982315, + "spec/features/remember_device/webauthn_spec.rb": 100.34840662, + "spec/features/reports/authorization_count_spec.rb": 85.181110755, + "spec/features/reports/monthly_gpo_letter_requests_report_spec.rb": 12.147364812, + "spec/features/reports/sp_active_users_report_spec.rb": 6.384792972, + "spec/features/saml/authorization_confirmation_spec.rb": 28.008763819, + "spec/features/saml/ial1/account_creation_spec.rb": 10.268314368, + "spec/features/saml/ial1_sso_spec.rb": 52.436571886, + "spec/features/saml/ial2_sso_spec.rb": 37.793149711, + "spec/features/saml/multiple_endpoints_spec.rb": 15.919821458, + "spec/features/saml/phishing_resistant_required_spec.rb": 57.728102805, + "spec/features/saml/redirect_uri_validation_spec.rb": 3.829670315, + "spec/features/saml/saml_logout_spec.rb": 27.65137224, + "spec/features/saml/saml_relay_state_spec.rb": 15.265043594, + "spec/features/saml/saml_spec.rb": 116.150112399, + "spec/features/saml/vtr_spec.rb": 46.349238505, + "spec/features/session/decryption_spec.rb": 3.139178501, + "spec/features/session/timeout_spec.rb": 6.314396648, + "spec/features/sign_in/banned_users_spec.rb": 13.639363556, + "spec/features/sign_in/multiple_vot_spec.rb": 71.328835734, + "spec/features/sign_in/remember_device_default_spec.rb": 9.745699835, + "spec/features/sign_in/setup_piv_cac_after_sign_in_spec.rb": 21.116448957, + "spec/features/sign_in/sp_return_log_spec.rb": 3.768465955, + "spec/features/sign_in/two_factor_options_spec.rb": 44.045565502, + "spec/features/sp_cost_tracking_spec.rb": 48.601390156, + "spec/features/two_factor_authentication/backup_code_sign_up_spec.rb": 21.199777697000002, + "spec/features/two_factor_authentication/change_factor_spec.rb": 17.202698845, + "spec/features/two_factor_authentication/multiple_mfa_sign_up_spec.rb": 33.263503848, + "spec/features/two_factor_authentication/multiple_tabs_spec.rb": 10.062705303, + "spec/features/two_factor_authentication/second_mfa_reminder_spec.rb": 22.956179569, + "spec/features/two_factor_authentication/sign_in_spec.rb": 116.785411909, + "spec/features/two_factor_authentication/sign_in_via_personal_key_spec.rb": 7.705983784, + "spec/features/users/password_recovery_via_recovery_code_spec.rb": 59.655791251, + "spec/features/users/password_reset_with_pending_profile_spec.rb": 4.872403388, + "spec/features/users/piv_cac_management_spec.rb": 27.371756725, + "spec/features/users/profile_recovery_for_gpo_verified_spec.rb": 13.627581932, + "spec/features/users/regenerate_personal_key_spec.rb": 7.844383973999999, + "spec/features/users/sign_in_spec.rb": 322.241050055, + "spec/features/users/sign_out_spec.rb": 3.164282277, + "spec/features/users/sign_up_spec.rb": 147.047050879, + "spec/features/users/totp_management_spec.rb": 25.904743163, + "spec/features/users/user_edit_spec.rb": 3.181753681, + "spec/features/users/user_profile_spec.rb": 41.128632676, + "spec/features/users/verify_profile_spec.rb": 16.643939632, + "spec/features/visitors/bad_password_spec.rb": 3.816522995, + "spec/features/visitors/email_confirmation_spec.rb": 20.703717348, + "spec/features/visitors/email_language_preference_spec.rb": 4.395883332, + "spec/features/visitors/i18n_spec.rb": 26.320521511, + "spec/features/visitors/js_disabled_spec.rb": 5.259457546, + "spec/features/visitors/navigation_spec.rb": 3.105267702, + "spec/features/visitors/password_recovery_spec.rb": 70.814923152, + "spec/features/visitors/resend_email_confirmation_spec.rb": 3.415838239, + "spec/features/visitors/set_password_spec.rb": 29.512037796, + "spec/features/visitors/sign_up_with_email_spec.rb": 22.499009117, + "spec/features/webauthn/hidden_spec.rb": 38.247847075, + "spec/features/webauthn/management_spec.rb": 110.862341562, + "spec/features/webauthn/sign_in_spec.rb": 27.965730736, + "spec/features/webauthn/sign_up_spec.rb": 34.285201975, + "spec/forms/add_user_email_form_spec.rb": 0.46145005, + "spec/forms/backup_code_verification_form_spec.rb": 0.5511937060000001, + "spec/forms/delete_user_email_form_spec.rb": 0.24342998999999998, + "spec/forms/edit_phone_form_spec.rb": 0.182344936, + "spec/forms/event_disavowal/password_reset_from_disavowal_form_spec.rb": 1.010230118, + "spec/forms/frontend_error_form_spec.rb": 0.014579402, + "spec/forms/gpo_verify_form_spec.rb": 1.331347436, + "spec/forms/idv/address_form_spec.rb": 0.008299902, + "spec/forms/idv/api_image_upload_form_spec.rb": 1.78258232, + "spec/forms/idv/doc_pii_form_spec.rb": 0.029815633, + "spec/forms/idv/how_to_verify_form_spec.rb": 0.0040551070000000005, + "spec/forms/idv/in_person/address_form_spec.rb": 0.030700422, + "spec/forms/idv/phone_confirmation_otp_verification_form_spec.rb": 0.148383496, + "spec/forms/idv/phone_form_spec.rb": 0.945222309, + "spec/forms/idv/ssn_format_form_spec.rb": 0.014970671999999999, + "spec/forms/idv/state_id_form_spec.rb": 0.034389589, + "spec/forms/new_phone_form_spec.rb": 1.397683157, + "spec/forms/openid_connect_authorize_form_spec.rb": 0.244170328, + "spec/forms/openid_connect_logout_form_spec.rb": 0.461538461, + "spec/forms/openid_connect_token_form_spec.rb": 1.745732499, + "spec/forms/otp_delivery_selection_form_spec.rb": 0.095795428, + "spec/forms/otp_verification_form_spec.rb": 0.224443878, + "spec/forms/password_form_spec.rb": 0.253338605, + "spec/forms/password_reset_email_form_spec.rb": 0.053293933, + "spec/forms/personal_key_form_spec.rb": 0.055512273, + "spec/forms/phone_recaptcha_form_spec.rb": 0.029156519, + "spec/forms/recaptcha_enterprise_form_spec.rb": 0.131959125, + "spec/forms/recaptcha_form_spec.rb": 0.9184347860000001, + "spec/forms/recaptcha_mock_form_spec.rb": 0.031515796, + "spec/forms/register_user_email_form_spec.rb": 4.9753281110000005, + "spec/forms/reset_password_form_spec.rb": 0.58396533, + "spec/forms/security_event_form_spec.rb": 2.206365641, + "spec/forms/sign_in_recaptcha_form_spec.rb": 0.279363656, + "spec/forms/totp_setup_form_spec.rb": 0.12180896799999999, + "spec/forms/totp_verification_form_spec.rb": 0.08495187, + "spec/forms/two_factor_authentication/auth_app_delete_form_spec.rb": 0.10808194, + "spec/forms/two_factor_authentication/auth_app_update_form_spec.rb": 0.39693524, + "spec/forms/two_factor_authentication/piv_cac_delete_form_spec.rb": 0.13213545999999998, + "spec/forms/two_factor_authentication/piv_cac_update_form_spec.rb": 0.230094882, + "spec/forms/two_factor_authentication/webauthn_delete_form_spec.rb": 0.15664256199999999, + "spec/forms/two_factor_authentication/webauthn_update_form_spec.rb": 0.251270903, + "spec/forms/two_factor_login_options_form_spec.rb": 0.044116956, + "spec/forms/two_factor_options_form_spec.rb": 0.217448683, + "spec/forms/update_email_language_form_spec.rb": 0.039483764000000005, + "spec/forms/update_user_password_form_spec.rb": 0.681128894, + "spec/forms/user_piv_cac_login_form_spec.rb": 0.031323151, + "spec/forms/user_piv_cac_setup_form_spec.rb": 0.159927444, + "spec/forms/user_piv_cac_verification_form_spec.rb": 0.096102239, + "spec/forms/verify_password_form_spec.rb": 0.115535162, + "spec/forms/verify_personal_key_form_spec.rb": 0.192837932, + "spec/forms/webauthn_setup_form_spec.rb": 0.384397351, + "spec/forms/webauthn_verification_form_spec.rb": 0.35862893, + "spec/forms/webauthn_visit_form_spec.rb": 0.166087906, + "spec/helpers/application_helper_spec.rb": 0.014721389, + "spec/helpers/go_back_helper_spec.rb": 0.017730072, + "spec/helpers/link_helper_spec.rb": 0.040840244, + "spec/helpers/locale_helper_spec.rb": 0.043777502, + "spec/helpers/script_helper_spec.rb": 0.036792271, + "spec/helpers/session_timeout_warning_helper_spec.rb": 0.018134732, + "spec/helpers/stylesheet_helper_spec.rb": 0.022328816, + "spec/i18n_spec.rb": 60.582515582, + "spec/jobs/address_proofing_job_spec.rb": 0.136225441, + "spec/jobs/application_job_spec.rb": 0.001605118, + "spec/jobs/fraud_rejection_daily_job_spec.rb": 0.157159851, + "spec/jobs/get_usps_proofing_results_job_spec.rb": 24.543089234, + "spec/jobs/get_usps_ready_proofing_results_job_spec.rb": 0.46247577900000003, + "spec/jobs/get_usps_waiting_proofing_results_job_spec.rb": 0.424998865, + "spec/jobs/gpo_daily_job_spec.rb": 0.054198371, + "spec/jobs/gpo_expiration_job_spec.rb": 1.424748395, + "spec/jobs/gpo_reminder_job_spec.rb": 0.744568878, + "spec/jobs/heartbeat_job_spec.rb": 0.005036174, + "spec/jobs/in_person/email_reminder_job_spec.rb": 0.829493901, + "spec/jobs/in_person/enrollments_ready_for_status_check/batch_processor_spec.rb": 0.019217526999999998, + "spec/jobs/in_person/enrollments_ready_for_status_check/enrollment_pipeline_spec.rb": 0.196496964, + "spec/jobs/in_person/enrollments_ready_for_status_check/error_reporter_spec.rb": 0.019970113, + "spec/jobs/in_person/enrollments_ready_for_status_check/sqs_batch_wrapper_spec.rb": 0.006547535, + "spec/jobs/in_person/enrollments_ready_for_status_check_job_spec.rb": 0.036235587, + "spec/jobs/in_person/send_proofing_notification_job_spec.rb": 0.7512943, + "spec/jobs/job_helpers/encryption_helper_spec.rb": 0.002067924, + "spec/jobs/job_helpers/s3_helper_spec.rb": 0.019930173, + "spec/jobs/job_helpers/stale_job_helper_spec.rb": 0.009229441, + "spec/jobs/job_helpers/timer_spec.rb": 0.014422795, + "spec/jobs/phone_number_opt_out_sync_job_spec.rb": 0.061726075, + "spec/jobs/reports/agreement_summary_report_spec.rb": 0.069842108, + "spec/jobs/reports/authentication_report_spec.rb": 0.183386095, + "spec/jobs/reports/base_report_spec.rb": 0.003303173, + "spec/jobs/reports/combined_invoice_supplement_report_spec.rb": 0.383151683, + "spec/jobs/reports/combined_invoice_supplement_report_v2_spec.rb": 0.545577975, + "spec/jobs/reports/daily_auths_report_spec.rb": 0.133245219, + "spec/jobs/reports/daily_dropoffs_report_spec.rb": 0.129952452, + "spec/jobs/reports/daily_registration_report_spec.rb": 0.08845602699999999, + "spec/jobs/reports/deleted_user_accounts_report_spec.rb": 0.07676519500000001, + "spec/jobs/reports/drop_off_report_spec.rb": 1.135277222, + "spec/jobs/reports/duplicate_ssn_report_spec.rb": 0.089602004, + "spec/jobs/reports/fraud_metrics_report_spec.rb": 0.814074041, + "spec/jobs/reports/identity_verification_report_spec.rb": 1.371368524, + "spec/jobs/reports/month_helper_spec.rb": 0.005193104, + "spec/jobs/reports/monthly_key_metrics_report_spec.rb": 1.814528929, + "spec/jobs/reports/protocols_report_spec.rb": 0.825553738, + "spec/jobs/reports/quarterly_account_stats_spec.rb": 0.27499112400000003, + "spec/jobs/reports/query_helpers_spec.rb": 0.004745791, + "spec/jobs/reports/sp_active_users_report_spec.rb": 0.035158791, + "spec/jobs/reports/sp_issuer_user_counts_report_spec.rb": 0.324090755, + "spec/jobs/reports/sp_user_counts_report_spec.rb": 0.041585976999999996, + "spec/jobs/reports/total_ial2_costs_report_spec.rb": 0.024357653, + "spec/jobs/reports/total_monthly_auths_report_spec.rb": 0.028810693999999998, + "spec/jobs/reports/verification_failures_report_spec.rb": 0.27671346, + "spec/jobs/resolution_proofing_job_spec.rb": 1.143426963, + "spec/jobs/risc_delivery_job_spec.rb": 0.101643167, + "spec/jobs/threat_metrix_js_verification_job_spec.rb": 0.36333144, + "spec/jobs/usps_auth_token_refresh_job_spec.rb": 0.15151435500000002, + "spec/lib/aamva_test_spec.rb": 0.139074812, + "spec/lib/ab_test_bucket_spec.rb": 0.078525313, + "spec/lib/action_account_spec.rb": 1.566823454, + "spec/lib/analytics_events_documenter_spec.rb": 0.088971225, + "spec/lib/app_artifacts_spec.rb": 0.010922943, + "spec/lib/asset_sources_spec.rb": 0.031445350999999996, + "spec/lib/aws/ses_spec.rb": 0.018442811, + "spec/lib/cleanup/destroy_unused_providers_spec.rb": 0.086454544, + "spec/lib/cleanup/destroyable_records_spec.rb": 0.940999392, + "spec/lib/custom_devise_failure_app_spec.rb": 0.00460655, + "spec/lib/data_pull_spec.rb": 0.652737212, + "spec/lib/data_requests/deployed/create_email_addresses_report_spec.rb": 0.016156832, + "spec/lib/data_requests/deployed/create_mfa_configurations_report_spec.rb": 0.099488896, + "spec/lib/data_requests/deployed/create_user_events_report_spec.rb": 0.038215141, + "spec/lib/data_requests/deployed/create_user_report_spec.rb": 0.057018517, + "spec/lib/data_requests/deployed/lookup_shared_device_users_spec.rb": 0.045218678, + "spec/lib/data_requests/deployed/lookup_user_by_uuid_spec.rb": 0.025611463, + "spec/lib/data_requests/local/fetch_cloudwatch_logs_spec.rb": 0.029860051, + "spec/lib/data_requests/local/write_cloudwatch_logs_spec.rb": 0.007106905, + "spec/lib/data_requests/local/write_user_events_spec.rb": 0.002102343, + "spec/lib/data_requests/local/write_user_info_spec.rb": 0.005410144, + "spec/lib/deploy/activate_spec.rb": 0.134729236, + "spec/lib/env_irb_prompt_spec.rb": 0.011137614, + "spec/lib/feature_management_spec.rb": 0.097850047, + "spec/lib/fingerprinter_spec.rb": 0.0049851259999999994, + "spec/lib/good_job_connection_pool_size_spec.rb": 0.007626568, + "spec/lib/headers_filter_spec.rb": 0.001844694, + "spec/lib/i18n_flat_yml_backend_spec.rb": 0.192014029, + "spec/lib/identity_config_spec.rb": 0.013648966, + "spec/lib/identity_cors_spec.rb": 0.011671278, + "spec/lib/identity_job_log_subscriber_spec.rb": 0.063442945, + "spec/lib/linters/analytics_event_name_linter_spec.rb": 0.215744551, + "spec/lib/linters/errors_add_linter_spec.rb": 0.23071772499999998, + "spec/lib/linters/image_size_linter_spec.rb": 0.232908915, + "spec/lib/linters/localized_validation_message_linter_spec.rb": 0.256079771, + "spec/lib/linters/mail_later_linter_spec.rb": 0.24299953700000002, + "spec/lib/linters/redirect_back_linter_spec.rb": 0.225835027, + "spec/lib/linters/url_options_linter_spec.rb": 0.24197249999999998, + "spec/lib/makefile_help_parser_spec.rb": 0.08001636399999999, + "spec/lib/otp_code_generator_spec.rb": 0.007905656, + "spec/lib/pinpoint_supported_countries_spec.rb": 0.060429967, + "spec/lib/pwned_password_downloader_spec.rb": 1.23108368, + "spec/lib/query_tracker_spec.rb": 0.012825844999999999, + "spec/lib/reporting/authentication_report_spec.rb": 0.266144882, + "spec/lib/reporting/cloudwatch_client_spec.rb": 0.961069537, + "spec/lib/reporting/cloudwatch_query_quoting_spec.rb": 0.0028370720000000004, + "spec/lib/reporting/cloudwatch_query_time_slice_spec.rb": 0.026072168, + "spec/lib/reporting/command_line_options_spec.rb": 0.05485999, + "spec/lib/reporting/drop_off_report_spec.rb": 0.094814202, + "spec/lib/reporting/fraud_metrics_lg99_report_spec.rb": 1.409767814, + "spec/lib/reporting/identity_verification_report_spec.rb": 0.102849361, + "spec/lib/reporting/mfa_report_spec.rb": 0.056335899, + "spec/lib/reporting/proofing_rate_report_spec.rb": 0.354145587, + "spec/lib/reporting/protocols_report_spec.rb": 0.089043748, + "spec/lib/reporting/unknown_progress_bar_spec.rb": 0.197871909, + "spec/lib/script_base_spec.rb": 0.005396827, + "spec/lib/session_encryptor_spec.rb": 0.018160362, + "spec/lib/tasks/dev_rake_spec.rb": 12.484981182, + "spec/lib/tasks/partners_rake_spec.rb": 0.606000229, + "spec/lib/tasks/rotate_rake_spec.rb": 0.123193839, + "spec/lib/telephony/alert_sender_spec.rb": 0.019129776, + "spec/lib/telephony/otp_sender_spec.rb": 0.049357705, + "spec/lib/telephony/pinpoint/aws_credential_builder_spec.rb": 0.007383479, + "spec/lib/telephony/pinpoint/opt_out_manager_spec.rb": 0.046775114, + "spec/lib/telephony/pinpoint/sms_sender_spec.rb": 0.099129745, + "spec/lib/telephony/pinpoint/voice_sender_spec.rb": 0.040145729, + "spec/lib/telephony/pinpoint_configuration_spec.rb": 0.002026893, + "spec/lib/telephony/response_spec.rb": 0.008953896, + "spec/lib/telephony/telephony_spec.rb": 0.033497343, + "spec/lib/telephony/test/call_spec.rb": 0.011124092, + "spec/lib/telephony/test/message_spec.rb": 0.009049968, + "spec/lib/telephony/test/sms_sender_spec.rb": 0.011830617, + "spec/lib/telephony/test/voice_sender_spec.rb": 0.005340878, + "spec/lib/telephony/util_spec.rb": 0.001751389, + "spec/lib/utf8_sanitizer_spec.rb": 0.018160657, + "spec/mailers/anonymous_mailer_spec.rb": 0.016311660999999998, + "spec/mailers/previews/anonymous_mailer_preview_spec.rb": 0.012880978, + "spec/mailers/previews/report_mailer_preview_spec.rb": 0.177810737, + "spec/mailers/previews/user_mailer_preview_spec.rb": 1.225633914, + "spec/mailers/report_mailer_spec.rb": 0.160545962, + "spec/mailers/user_mailer_spec.rb": 15.237562915, + "spec/models/account_reset_request_spec.rb": 0.021777884, + "spec/models/agency_identity_spec.rb": 0.012170942, + "spec/models/agency_spec.rb": 0.021024363, + "spec/models/agreements/iaa_gtc_spec.rb": 0.152943047, + "spec/models/agreements/iaa_order_spec.rb": 0.286296493, + "spec/models/agreements/iaa_spec.rb": 0.169080467, + "spec/models/agreements/integration_spec.rb": 0.288135378, + "spec/models/agreements/integration_status_spec.rb": 0.032299085, + "spec/models/agreements/integration_usage_spec.rb": 0.207986074, + "spec/models/agreements/partner_account_spec.rb": 0.12776266, + "spec/models/agreements/partner_account_status_spec.rb": 0.036265066, + "spec/models/anonymous_user_spec.rb": 0.014205368, + "spec/models/backup_code_configuration_spec.rb": 1.0317879429999999, + "spec/models/concerns/user_otp_methods_spec.rb": 0.001789001, + "spec/models/deleted_user_spec.rb": 0.049754827, + "spec/models/device_spec.rb": 0.044413662, + "spec/models/disposable_email_domain_spec.rb": 0.015849912, + "spec/models/document_capture_session_spec.rb": 0.040704405, + "spec/models/email_address_spec.rb": 0.198981201, + "spec/models/event_spec.rb": 0.01874388, + "spec/models/gpo_confirmation_code_spec.rb": 0.113064843, + "spec/models/in_person_enrollment_spec.rb": 2.499895643, + "spec/models/notification_phone_configuration_spec.rb": 0.113878505, + "spec/models/null_identity_spec.rb": 0.002164356, + "spec/models/phone_configuration_spec.rb": 0.163814453, + "spec/models/phone_number_opt_out_spec.rb": 0.066325212, + "spec/models/profile_spec.rb": 2.354331087, + "spec/models/service_provider_identity_spec.rb": 0.381239169, + "spec/models/service_provider_spec.rb": 0.252558604, + "spec/models/sp_return_log_spec.rb": 0.003298218, + "spec/models/suspended_email_spec.rb": 0.064728166, + "spec/models/user_spec.rb": 5.743968762, + "spec/models/webauthn_configuration_spec.rb": 0.213011604, + "spec/policies/backup_code_policy_spec.rb": 0.014461469, + "spec/policies/idv/flow_policy_spec.rb": 0.963665349, + "spec/policies/idv/gpo_verify_by_mail_policy_spec.rb": 0.408249793, + "spec/policies/idv/step_info_spec.rb": 0.010034961, + "spec/policies/pending_profile_policy_spec.rb": 0.104283085, + "spec/policies/service_provider_mfa_policy_spec.rb": 0.484595689, + "spec/policies/two_factor_authentication/piv_cac_policy_spec.rb": 0.052230572999999995, + "spec/policies/user_mfa_policy_spec.rb": 0.13815113099999998, + "spec/policies/webauthn_login_option_policy_spec.rb": 0.053190084, + "spec/presenters/account_reset/pending_presenter_spec.rb": 0.193247407, + "spec/presenters/account_show_presenter_spec.rb": 1.133183096, + "spec/presenters/cancellation_presenter_spec.rb": 0.008470465, + "spec/presenters/completions_presenter_spec.rb": 0.499019475, + "spec/presenters/confirm_delete_email_presenter_spec.rb": 0.018478725, + "spec/presenters/eastern_time_presenter_spec.rb": 0.001935063, + "spec/presenters/idv/by_mail/letter_enqueued_presenter_spec.rb": 0.291293866, + "spec/presenters/idv/cancellations_presenter_spec.rb": 0.014601384, + "spec/presenters/idv/in_person/ready_to_verify_presenter_spec.rb": 0.500439798, + "spec/presenters/idv/in_person/usps_form_presenter_spec.rb": 0.002116309, + "spec/presenters/idv/in_person/verification_results_email_presenter_spec.rb": 0.44878951, + "spec/presenters/idv/welcome_presenter_spec.rb": 0.169901033, + "spec/presenters/image_upload_response_presenter_spec.rb": 0.033426383, + "spec/presenters/max_attempts_reached_presenter_spec.rb": 0.007656671, + "spec/presenters/mfa_confirmation_presenter_spec.rb": 0.011937996, + "spec/presenters/navigation_presenter_spec.rb": 0.096045774, + "spec/presenters/openid_connect_certs_presenter_spec.rb": 0.002139914, + "spec/presenters/openid_connect_configuration_presenter_spec.rb": 0.002306851, + "spec/presenters/openid_connect_user_info_presenter_spec.rb": 0.809564563, + "spec/presenters/piv_cac_authentication_setup_presenter_spec.rb": 0.037284822, + "spec/presenters/piv_cac_error_presenter_spec.rb": 0.007516693, + "spec/presenters/piv_cac_recommended_presenter_spec.rb": 0.031413131000000004, + "spec/presenters/risc_configuration_presenter_spec.rb": 0.00523483, + "spec/presenters/saml_requested_attributes_presenter_spec.rb": 0.025240161, + "spec/presenters/session_timeout_modal_presenter_spec.rb": 0.00302267, + "spec/presenters/setup_presenter_spec.rb": 0.041311018, + "spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb": 0.0061322600000000005, + "spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb": 0.0038320460000000004, + "spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb": 0.010030915999999999, + "spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb": 0.02578085, + "spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb": 0.008902443999999999, + "spec/presenters/two_factor_auth_code/sms_opt_in_presenter_spec.rb": 0.017045949, + "spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb": 0.027396078, + "spec/presenters/two_factor_authentication/piv_cac_edit_presenter_spec.rb": 0.010270539, + "spec/presenters/two_factor_authentication/set_up_auth_app_selection_presenter_spec.rb": 0.06005169, + "spec/presenters/two_factor_authentication/set_up_backup_code_selection_presenter_spec.rb": 0.077608191, + "spec/presenters/two_factor_authentication/set_up_phone_selection_presenter_spec.rb": 0.089137878, + "spec/presenters/two_factor_authentication/set_up_piv_cac_selection_presenter_spec.rb": 0.09329821599999999, + "spec/presenters/two_factor_authentication/set_up_selection_presenter_spec.rb": 0.219110729, + "spec/presenters/two_factor_authentication/set_up_webauthn_platform_selection_presenter_spec.rb": 0.077212032, + "spec/presenters/two_factor_authentication/set_up_webauthn_selection_presenter_spec.rb": 0.059915115, + "spec/presenters/two_factor_authentication/sign_in_auth_app_selection_presenter_spec.rb": 0.047093430000000006, + "spec/presenters/two_factor_authentication/sign_in_personal_key_selection_presenter_spec.rb": 0.027149782, + "spec/presenters/two_factor_authentication/sign_in_phone_selection_presenter_spec.rb": 0.21861920099999999, + "spec/presenters/two_factor_authentication/sign_in_piv_cac_selection_presenter_spec.rb": 0.048913037, + "spec/presenters/two_factor_authentication/sign_in_selection_presenter_spec.rb": 0.050376781999999995, + "spec/presenters/two_factor_authentication/sign_in_webauthn_platform_selection_presenter_spec.rb": 0.09374437000000001, + "spec/presenters/two_factor_authentication/sign_in_webauthn_selection_presenter_spec.rb": 0.058039878, + "spec/presenters/two_factor_authentication/webauthn_edit_presenter_spec.rb": 0.16225198899999999, + "spec/presenters/two_factor_login_options_presenter_spec.rb": 1.405353042, + "spec/presenters/two_factor_options_presenter_spec.rb": 0.151245246, + "spec/presenters/utc_time_presenter_spec.rb": 0.002188769, + "spec/presenters/webauthn_setup_presenter_spec.rb": 0.127472919, + "spec/requests/acuant_sdk_spec.rb": 0.054541489, + "spec/requests/api_cors_spec.rb": 0.134884296, + "spec/requests/asset_sri_spec.rb": 0.026569821, + "spec/requests/bimi_logo_spec.rb": 0.013569705, + "spec/requests/csp_spec.rb": 0.42316236, + "spec/requests/headers_spec.rb": 0.194101803, + "spec/requests/i18n_spec.rb": 0.105325554, + "spec/requests/invalid_encoding_spec.rb": 0.090560777, + "spec/requests/invalid_sign_in_params_spec.rb": 0.056582443999999996, + "spec/requests/not_acceptable_spec.rb": 0.057810138, + "spec/requests/openid_connect_authorize_spec.rb": 0.45981289300000006, + "spec/requests/openid_connect_cors_spec.rb": 0.210821082, + "spec/requests/openid_connect_userinfo_spec.rb": 0.082876998, + "spec/requests/page_not_found_spec.rb": 0.077226453, + "spec/requests/rack_attack_spec.rb": 4.107932132, + "spec/requests/redis_down_spec.rb": 0.015857105, + "spec/requests/saml_requests_spec.rb": 0.113457932, + "spec/requests/secure_cookies_spec.rb": 0.075556665, + "spec/routing/gpo_verification_routing_spec.rb": 0.219044982, + "spec/scripts/changelog_check_spec.rb": 0.021078285999999998, + "spec/scripts/notify-slack_spec.rb": 0.022064474, + "spec/services/access_token_verifier_spec.rb": 0.022484063, + "spec/services/account_reset/cancel_request_for_user_spec.rb": 0.7150892050000001, + "spec/services/account_reset/cancel_spec.rb": 1.148140806, + "spec/services/account_reset/create_request_spec.rb": 0.716999978, + "spec/services/account_reset/delete_account_spec.rb": 0.426730259, + "spec/services/account_reset/find_pending_request_for_user_spec.rb": 0.187623279, + "spec/services/account_reset/grant_request_spec.rb": 0.288722926, + "spec/services/account_reset/grant_requests_and_send_emails_spec.rb": 3.2905856019999997, + "spec/services/account_reset/notify_user_of_request_cancellation_spec.rb": 0.6153576629999999, + "spec/services/agency_identity_linker_spec.rb": 0.308543855, + "spec/services/agency_seeder_spec.rb": 0.042346156, + "spec/services/agreements/iaa_gtc_seeder_spec.rb": 0.023883705, + "spec/services/agreements/iaa_order_seeder_spec.rb": 0.051331604, + "spec/services/agreements/integration_seeder_spec.rb": 0.050878259, + "spec/services/agreements/integration_status_seeder_spec.rb": 0.019314591, + "spec/services/agreements/partner_account_seeder_spec.rb": 0.02655487, + "spec/services/agreements/partner_account_status_seeder_spec.rb": 0.03357657, + "spec/services/analytics_spec.rb": 0.173401863, + "spec/services/attribute_asserter_spec.rb": 1.483457884, + "spec/services/auth_methods_session_spec.rb": 0.053413918, + "spec/services/authn_context_resolver_spec.rb": 0.430684421, + "spec/services/backup_code_generator_spec.rb": 1.484695994, + "spec/services/banned_user_resolver_spec.rb": 0.112245602, + "spec/services/barcode_outputter_spec.rb": 0.030089082, + "spec/services/browser_cache_spec.rb": 0.006068977, + "spec/services/browser_support_spec.rb": 0.039321525, + "spec/services/calendar_service_spec.rb": 0.04447734, + "spec/services/cloud_front_header_parser_spec.rb": 0.00850072, + "spec/services/completions_decider_spec.rb": 0.013128602, + "spec/services/create_new_device_alert_spec.rb": 0.612009504, + "spec/services/database_health_checker_spec.rb": 0.006189048, + "spec/services/date_parser_spec.rb": 0.009858775, + "spec/services/db/add_document_verification_and_selfie_costs_spec.rb": 0.016449993, + "spec/services/db/identity/sp_active_user_counts_spec.rb": 0.10222668, + "spec/services/db/identity/sp_user_counts_spec.rb": 0.037916749, + "spec/services/db/monthly_auth_count/total_monthly_auth_counts_spec.rb": 0.040825216, + "spec/services/db/monthly_sp_auth_count/new_unique_monthly_user_counts_by_partner_spec.rb": 0.337757331, + "spec/services/db/monthly_sp_auth_count/total_monthly_auth_counts_within_iaa_window_spec.rb": 0.07752808500000001, + "spec/services/db/monthly_sp_auth_count/unique_monthly_auth_counts_by_iaa_spec.rb": 0.11995729499999999, + "spec/services/deleted_accounts_report_spec.rb": 0.116461313, + "spec/services/device_name_spec.rb": 0.013238513, + "spec/services/displayable_pii_formatter_spec.rb": 0.745356604, + "spec/services/doc_auth/classification_concern_spec.rb": 0.005274849, + "spec/services/doc_auth/error_generator_spec.rb": 0.07909819, + "spec/services/doc_auth/lexis_nexis/issuer_types_spec.rb": 0.0036825879999999997, + "spec/services/doc_auth/lexis_nexis/lexis_nexis_client_spec.rb": 0.223271308, + "spec/services/doc_auth/lexis_nexis/request_spec.rb": 0.471906796, + "spec/services/doc_auth/lexis_nexis/requests/true_id_request_spec.rb": 0.301236558, + "spec/services/doc_auth/lexis_nexis/responses/true_id_response_spec.rb": 0.522907762, + "spec/services/doc_auth/lexis_nexis/result_codes_spec.rb": 0.0028233069999999997, + "spec/services/doc_auth/mock/doc_auth_mock_client_spec.rb": 0.074707988, + "spec/services/doc_auth/mock/result_response_spec.rb": 0.0612986, + "spec/services/doc_auth/processed_alert_to_log_alert_formatter_spec.rb": 0.004074277, + "spec/services/doc_auth/response_spec.rb": 0.006326999, + "spec/services/doc_auth/selfie_concern_spec.rb": 0.009811720999999999, + "spec/services/doc_auth_router_spec.rb": 0.028813488999999998, + "spec/services/document_capture_session_result_spec.rb": 0.025438666000000002, + "spec/services/duration_parser_spec.rb": 0.018023096, + "spec/services/email_confirmation_token_validator_spec.rb": 0.152600193, + "spec/services/email_normalizer_spec.rb": 0.018415462, + "spec/services/encrypted_attribute_spec.rb": 0.011065137, + "spec/services/encrypted_redis_struct_storage_spec.rb": 0.027727459, + "spec/services/encryption/aes_cipher_spec.rb": 0.007150135, + "spec/services/encryption/aes_cipher_v2_spec.rb": 0.009647887, + "spec/services/encryption/contextless_kms_client_spec.rb": 0.056613672999999996, + "spec/services/encryption/encryptors/aes_encryptor_spec.rb": 0.006345161, + "spec/services/encryption/encryptors/aes_encryptor_v2_spec.rb": 0.006547783, + "spec/services/encryption/encryptors/attribute_encryptor_spec.rb": 0.016040208, + "spec/services/encryption/encryptors/background_proofing_arg_encryptor_spec.rb": 0.028757629, + "spec/services/encryption/encryptors/pii_encryptor_spec.rb": 0.060123804, + "spec/services/encryption/kms_client_spec.rb": 0.055320299999999996, + "spec/services/encryption/kms_logger_spec.rb": 0.006713292, + "spec/services/encryption/password_verifier_spec.rb": 0.074414662, + "spec/services/encryption/uak_password_verifier_spec.rb": 0.205843889, + "spec/services/encryption/user_access_key_spec.rb": 0.09196997700000001, + "spec/services/event_disavowal/disavow_event_spec.rb": 0.020778375, + "spec/services/event_disavowal/find_disavowed_event_spec.rb": 0.037977496, + "spec/services/event_disavowal/validate_disavowed_event_spec.rb": 0.059197875, + "spec/services/forget_all_browsers_spec.rb": 0.01329437, + "spec/services/form_response_spec.rb": 0.16372605, + "spec/services/fraud_review_check_spec.rb": 0.396250986, + "spec/services/frontend_error_logger_spec.rb": 0.007359180999999999, + "spec/services/frontend_logger_spec.rb": 0.011290913, + "spec/services/funnel/registration/add_mfa_spec.rb": 0.016037486, + "spec/services/funnel/registration/total_registered_count_spec.rb": 0.056007546, + "spec/services/gpo_confirmation_exporter_spec.rb": 0.007179036, + "spec/services/gpo_confirmation_maker_spec.rb": 0.718111097, + "spec/services/gpo_confirmation_spec.rb": 0.124798954, + "spec/services/gpo_confirmation_uploader_spec.rb": 0.069292556, + "spec/services/gpo_daily_test_sender_spec.rb": 0.025852724, + "spec/services/gpo_reminder_sender_spec.rb": 6.286288175, + "spec/services/health_check_summary_spec.rb": 0.004495312, + "spec/services/iaa_reporting_helper_spec.rb": 0.291552918, + "spec/services/ial_context_spec.rb": 0.242684082, + "spec/services/id_token_builder_spec.rb": 0.408968794, + "spec/services/identity_linker_spec.rb": 0.621488541, + "spec/services/idv/agent_spec.rb": 0.324959911, + "spec/services/idv/analytics_events_enhancer_spec.rb": 0.173019059, + "spec/services/idv/cancel_verification_attempt_spec.rb": 0.175944262, + "spec/services/idv/data_url_image_spec.rb": 0.007876148, + "spec/services/idv/doc_auth_form_response_spec.rb": 0.00613024, + "spec/services/idv/duplicate_ssn_finder_spec.rb": 0.200170443, + "spec/services/idv/in_person/completion_survey_sender_spec.rb": 1.789040882, + "spec/services/idv/in_person/enrollment_code_formatter_spec.rb": 0.002101893, + "spec/services/idv/in_person_config_spec.rb": 0.033540573, + "spec/services/idv/phone_confirmation_session_spec.rb": 0.140203572, + "spec/services/idv/phone_step_spec.rb": 0.491907933, + "spec/services/idv/profile_logging_spec.rb": 0.116984865, + "spec/services/idv/profile_maker_spec.rb": 0.866861376, + "spec/services/idv/proofing_components_spec.rb": 0.363246136, + "spec/services/idv/send_phone_confirmation_otp_spec.rb": 0.18021041799999998, + "spec/services/idv/session_spec.rb": 0.911858531, + "spec/services/idv/steps/in_person/state_id_step_spec.rb": 0.202552002, + "spec/services/key_rotator/attribute_encryption_spec.rb": 0.033168266, + "spec/services/key_rotator/hmac_fingerprinter_spec.rb": 0.104572507, + "spec/services/marketing_site_spec.rb": 0.055813604, + "spec/services/multi_health_checker_spec.rb": 0.004968731, + "spec/services/openid_connect_attribute_scoper_spec.rb": 0.026317215, + "spec/services/otp_preference_updater_spec.rb": 0.041684341, + "spec/services/otp_rate_limiter_spec.rb": 0.173045941, + "spec/services/out_of_band_session_accessor_spec.rb": 0.018009174, + "spec/services/outage_status_spec.rb": 0.045909967, + "spec/services/outbound_health_checker_spec.rb": 0.069298688, + "spec/services/parse_controller_from_referer_spec.rb": 0.004415828, + "spec/services/personal_key_generator_spec.rb": 0.277809762, + "spec/services/phone_formatter_spec.rb": 0.045257067, + "spec/services/phone_number_capabilities_spec.rb": 0.08331530499999999, + "spec/services/pii/attributes_spec.rb": 0.020076642999999998, + "spec/services/pii/cacher_spec.rb": 0.338584343, + "spec/services/pii/fingerprinter_spec.rb": 0.018756698, + "spec/services/pii/re_encryptor_spec.rb": 0.127778593, + "spec/services/piv_cac/check_config_spec.rb": 0.007850743, + "spec/services/piv_cac_service_spec.rb": 0.040146885, + "spec/services/profanity_detector_spec.rb": 0.014016517, + "spec/services/proofing/aamva/applicant_spec.rb": 0.0045696009999999995, + "spec/services/proofing/aamva/authentication_client_spec.rb": 0.125788606, + "spec/services/proofing/aamva/hmac_secret_spec.rb": 0.001820709, + "spec/services/proofing/aamva/proofer_spec.rb": 0.683758813, + "spec/services/proofing/aamva/request/authentication_token_request_spec.rb": 0.165844549, + "spec/services/proofing/aamva/request/security_token_request_spec.rb": 0.24555122, + "spec/services/proofing/aamva/request/verification_request_spec.rb": 0.255770122, + "spec/services/proofing/aamva/response/authentication_token_response_spec.rb": 0.023136959999999998, + "spec/services/proofing/aamva/response/security_token_response_spec.rb": 0.037510657, + "spec/services/proofing/aamva/response/verification_response_spec.rb": 0.193374225, + "spec/services/proofing/aamva/soap_error_handler_spec.rb": 0.03052618, + "spec/services/proofing/aamva/verification_client_spec.rb": 0.351614356, + "spec/services/proofing/ddp_result_spec.rb": 0.024912588, + "spec/services/proofing/lexis_nexis/date_formatter_spec.rb": 0.00677379, + "spec/services/proofing/lexis_nexis/ddp/proofing_spec.rb": 0.074588535, + "spec/services/proofing/lexis_nexis/ddp/response_redacter_spec.rb": 0.00751342, + "spec/services/proofing/lexis_nexis/ddp/verification_request_spec.rb": 0.007889221, + "spec/services/proofing/lexis_nexis/instant_verify/check_to_attribute_mapper_spec.rb": 0.012853282, + "spec/services/proofing/lexis_nexis/instant_verify/proofing_spec.rb": 0.049222813, + "spec/services/proofing/lexis_nexis/instant_verify/verification_request_spec.rb": 0.09954439300000001, + "spec/services/proofing/lexis_nexis/phone_finder/proofing_spec.rb": 0.084903336, + "spec/services/proofing/lexis_nexis/phone_finder/verification_request_spec.rb": 0.060045394, + "spec/services/proofing/lexis_nexis/request_signer_spec.rb": 0.002658417, + "spec/services/proofing/lexis_nexis/response_spec.rb": 0.025282017, + "spec/services/proofing/lexis_nexis/verification_error_parser_spec.rb": 0.011646229000000001, + "spec/services/proofing/mock/address_mock_client_spec.rb": 0.007063774, + "spec/services/proofing/mock/ddp_mock_client_spec.rb": 0.018888119, + "spec/services/proofing/mock/device_profiling_backend_spec.rb": 0.003560419, + "spec/services/proofing/mock/resolution_mock_client_spec.rb": 0.013343793, + "spec/services/proofing/mock/state_id_mock_client_spec.rb": 0.006575278, + "spec/services/proofing/resolution/progressive_proofer_spec.rb": 0.208392452, + "spec/services/proofing/resolution/result_adjudicator_spec.rb": 0.0046087260000000005, + "spec/services/proofing/state_id_result_spec.rb": 0.001828287, + "spec/services/proofing_session_async_result_spec.rb": 0.002685299, + "spec/services/push_notification/account_disabled_event_spec.rb": 0.016963777, + "spec/services/push_notification/account_enabled_event_spec.rb": 0.015430447, + "spec/services/push_notification/account_purged_event_spec.rb": 0.015294857, + "spec/services/push_notification/email_changed_event_spec.rb": 0.021607607, + "spec/services/push_notification/http_push_spec.rb": 0.237496539, + "spec/services/push_notification/identifier_recycled_event_spec.rb": 0.020995965, + "spec/services/push_notification/mfa_limit_account_locked_event_spec.rb": 0.020142685, + "spec/services/push_notification/password_reset_event_spec.rb": 0.020606346999999997, + "spec/services/push_notification/recovery_activated_event_spec.rb": 0.019176887, + "spec/services/push_notification/reproof_completed_event_spec.rb": 0.017098269, + "spec/services/pwned_passwords/lookup_password_spec.rb": 0.00394622, + "spec/services/random_phrase_spec.rb": 0.032353262, + "spec/services/rate_limiter_spec.rb": 0.054624769, + "spec/services/reactivate_account_session_spec.rb": 0.393444611, + "spec/services/recaptcha_annotator_spec.rb": 0.095109099, + "spec/services/redis_rate_limiter_spec.rb": 0.032967894, + "spec/services/remember_device_cookie_spec.rb": 0.10510436199999999, + "spec/services/reporting/account_deletion_rate_report_spec.rb": 0.340905387, + "spec/services/reporting/account_reuse_report_spec.rb": 0.748899518, + "spec/services/reporting/active_users_count_report_spec.rb": 0.070563765, + "spec/services/reporting/agency_and_sp_report_spec.rb": 0.420627497, + "spec/services/reporting/total_user_count_report_spec.rb": 0.169074684, + "spec/services/request_password_reset_spec.rb": 3.763624738, + "spec/services/reset_user_password_spec.rb": 2.724298063, + "spec/services/revoke_service_provider_consent_spec.rb": 0.018004378, + "spec/services/saml_endpoint_spec.rb": 0.017151067, + "spec/services/saml_request_validator_spec.rb": 0.106470848, + "spec/services/secure_headers_allow_list_spec.rb": 0.007364198, + "spec/services/send_sign_up_email_confirmation_spec.rb": 0.703823884, + "spec/services/service_provider_request_proxy_spec.rb": 0.013074959, + "spec/services/service_provider_seeder_spec.rb": 1.079190796, + "spec/services/service_provider_updater_spec.rb": 0.319810794, + "spec/services/sp_handoff_bouncer_spec.rb": 0.012975407000000001, + "spec/services/sp_return_url_resolver_spec.rb": 0.034150288, + "spec/services/ssn_formatter_spec.rb": 0.013067091, + "spec/services/store_sp_metadata_in_session_spec.rb": 0.004480781, + "spec/services/string_redacter_spec.rb": 0.002059893, + "spec/services/time_service_spec.rb": 0.001780386, + "spec/services/update_user_phone_configuration_spec.rb": 0.213376555, + "spec/services/uri_service_spec.rb": 0.010038905, + "spec/services/user_alerts/alert_user_about_account_verified_spec.rb": 0.607037417, + "spec/services/user_alerts/alert_user_about_new_device_spec.rb": 1.43689136, + "spec/services/user_alerts/alert_user_about_password_change_spec.rb": 0.386154891, + "spec/services/user_alerts/alert_user_about_personal_key_sign_in_spec.rb": 0.403043641, + "spec/services/user_event_creator_spec.rb": 0.259007909, + "spec/services/user_profiles_encryptor_spec.rb": 0.47704366, + "spec/services/user_seeder_spec.rb": 2.652643483, + "spec/services/user_session_context_spec.rb": 0.028326367999999998, + "spec/services/usps_in_person_proofing/enrollment_helper_spec.rb": 4.689472863, + "spec/services/usps_in_person_proofing/proofer_spec.rb": 0.371539947, + "spec/services/usps_in_person_proofing/transliterable_validator_spec.rb": 0.037592617, + "spec/services/usps_in_person_proofing/transliterator_spec.rb": 0.064880172, + "spec/services/uuid_reporter_spec.rb": 0.298750628, + "spec/services/vot/component_expander_spec.rb": 0.005905904, + "spec/services/vot/parser_spec.rb": 0.01343031, + "spec/services/x509/attribute_spec.rb": 0.002787876, + "spec/services/x509/attributes_spec.rb": 0.009775327, + "spec/support/fake_analytics_spec.rb": 0.104120276, + "spec/svg_spec.rb": 0.185046308, + "spec/views/account_reset/cancel/show.html.erb_spec.rb": 0.011719248, + "spec/views/account_reset/confirm_delete_account/show.html.erb_spec.rb": 0.0177614, + "spec/views/account_reset/confirm_request/show.html.erb_spec.rb": 0.00712074, + "spec/views/account_reset/delete_account/show.html.erb_spec.rb": 0.041795167, + "spec/views/account_reset/recovery_options/show.html.erb_spec.rb": 0.015515424, + "spec/views/account_reset/request/show.html.erb_spec.rb": 0.061565929000000005, + "spec/views/account_reset/user_mailer/email_confirmation_instructions.html.erb_spec.rb": 0.065737303, + "spec/views/accounts/_auth_apps.html.erb_spec.rb": 0.042716232, + "spec/views/accounts/_badges.html.erb_spec.rb": 0.025661304000000003, + "spec/views/accounts/_identity_verification.html.erb_spec.rb": 0.925235472, + "spec/views/accounts/_nav_auth.html.erb_spec.rb": 0.083163178, + "spec/views/accounts/_piv_cac.html.erb_spec.rb": 0.028266955, + "spec/views/accounts/_webauthn_platform.html.erb_spec.rb": 0.049700708, + "spec/views/accounts/_webauthn_roaming.html.erb_spec.rb": 0.055823879, + "spec/views/accounts/connected_accounts/show.html.erb_spec.rb": 0.06859206000000001, + "spec/views/accounts/history/show.html.erb_spec.rb": 0.041674826, + "spec/views/accounts/show.html.erb_spec.rb": 0.988430892, + "spec/views/accounts/two_factor_authentication/show.html.erb_spec.rb": 0.1478848, + "spec/views/anonymous_mailer/password_reset_missing_user.html.erb_spec.rb": 0.009898962, + "spec/views/devise/passwords/edit.html.erb_spec.rb": 0.131357958, + "spec/views/devise/passwords/new.html.erb_spec.rb": 0.126458668, + "spec/views/devise/sessions/new.html.erb_spec.rb": 0.414637679, + "spec/views/forgot_password/show.html.erb_spec.rb": 0.024199372, + "spec/views/idv/activated.html.erb_spec.rb": 0.013615457000000001, + "spec/views/idv/address/new.html.erb_spec.rb": 0.121397195, + "spec/views/idv/agreement/show.html.erb_spec.rb": 0.024659859, + "spec/views/idv/by_mail/enter_code/index.html.erb_spec.rb": 0.172866002, + "spec/views/idv/by_mail/letter_enqueued/show.html.erb_spec.rb": 0.041979378, + "spec/views/idv/by_mail/request_letter/index.html.erb_spec.rb": 0.097921321, + "spec/views/idv/cancellations/destroy.html.erb_spec.rb": 0.010639905000000002, + "spec/views/idv/cancellations/new.html.erb_spec.rb": 0.082165272, + "spec/views/idv/doc_auth/_cancel.html.erb_spec.rb": 0.009647506, + "spec/views/idv/enter_password/new.html.erb_spec.rb": 0.1217572, + "spec/views/idv/how_to_verify/show.html.erb_spec.rb": 0.125858833, + "spec/views/idv/hybrid_handoff/show.html.erb_spec.rb": 0.643169063, + "spec/views/idv/in_person/ready_to_verify/show.html.erb_spec.rb": 0.668501823, + "spec/views/idv/in_person/state_id.html.erb_spec.rb": 0.038770297, + "spec/views/idv/mail_only_warning/show.html.erb_spec.rb": 0.008579748, + "spec/views/idv/not_verified/show.html.erb_spec.rb": 0.030211784, + "spec/views/idv/phone/new.html.erb_spec.rb": 0.083096378, + "spec/views/idv/phone_errors/_warning.html.erb_spec.rb": 0.03556945, + "spec/views/idv/phone_errors/failure.html.erb_spec.rb": 0.072504023, + "spec/views/idv/phone_errors/jobfail.html.erb_spec.rb": 0.033594856, + "spec/views/idv/phone_errors/timeout.html.erb_spec.rb": 0.0292084, + "spec/views/idv/phone_errors/warning.html.erb_spec.rb": 0.08777009599999999, + "spec/views/idv/please_call/show.html.erb_spec.rb": 0.025143636, + "spec/views/idv/session_errors/exception.html.erb_spec.rb": 0.023620281, + "spec/views/idv/session_errors/failure.html.erb_spec.rb": 0.025207694, + "spec/views/idv/session_errors/rate_limited.html.erb_spec.rb": 0.053382150999999996, + "spec/views/idv/session_errors/state_id_warning.html.erb_spec.rb": 0.031263527, + "spec/views/idv/session_errors/warning.html.erb_spec.rb": 0.033486179, + "spec/views/idv/shared/_back.html.erb_spec.rb": 0.043048346, + "spec/views/idv/shared/_document_capture.html.erb_spec.rb": 0.053554248, + "spec/views/idv/shared/_error.html.erb_spec.rb": 0.105523095, + "spec/views/idv/shared/ssn.html.erb_spec.rb": 0.086483618, + "spec/views/idv/unavailable/show.html.erb_spec.rb": 0.064903133, + "spec/views/idv/welcome/show.html.erb_spec.rb": 0.100329087, + "spec/views/layouts/application.html.erb_spec.rb": 0.11981191299999999, + "spec/views/layouts/base.html.erb_spec.rb": 0.005489995, + "spec/views/layouts/mailer.html.erb_spec.rb": 0.140908402, + "spec/views/mfa_confirmation/show.html.erb_spec.rb": 0.189629262, + "spec/views/partials/multi_factor_authentication/_mfa_selection.html.erb_spec.rb": 0.797979308, + "spec/views/partials/personal_key/_key.html.erb_spec.rb": 0.034012482999999996, + "spec/views/phone_setup/index.html.erb_spec.rb": 0.270544171, + "spec/views/reactivate_account/index.html.erb_spec.rb": 0.019459972, + "spec/views/shared/_address.html.erb_spec.rb": 0.005871037, + "spec/views/shared/_banner.html.erb_spec.rb": 0.007326073, + "spec/views/shared/_cancel_or_back_to_options.html.erb_spec.rb": 0.033154499, + "spec/views/shared/_email_languages.html.erb_spec.rb": 0.034244682, + "spec/views/shared/_footer_lite.html.erb_spec.rb": 0.050918198, + "spec/views/shared/_masked_text.html.erb_spec.rb": 0.016611389, + "spec/views/shared/_nav_branded.html.erb_spec.rb": 0.026504217, + "spec/views/shared/_nav_lite.html.erb_spec.rb": 0.005739164, + "spec/views/shared/_personal_key.html.erb_spec.rb": 0.007075198, + "spec/views/shared/_troubleshooting_options.html.erb_spec.rb": 0.088376889, + "spec/views/sign_up/completions/show.html.erb_spec.rb": 0.19262604, + "spec/views/sign_up/emails/show.html.erb_spec.rb": 0.05862586, + "spec/views/sign_up/passwords/new.html.erb_spec.rb": 0.099710095, + "spec/views/sign_up/registrations/new.html.erb_spec.rb": 0.167753761, + "spec/views/two_factor_authentication/options/index.html.erb_spec.rb": 0.092068192, + "spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb": 0.349683922, + "spec/views/two_factor_authentication/personal_key_verification/show.html.erb_spec.rb": 0.120309366, + "spec/views/two_factor_authentication/sms_opt_in/error.html.erb_spec.rb": 0.028767034999999996, + "spec/views/two_factor_authentication/sms_opt_in/new.html.erb_spec.rb": 0.051175543, + "spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb": 0.228304699, + "spec/views/two_factor_authentication/webauthn_verification/show.html.erb_spec.rb": 0.139305339, + "spec/views/users/auth_app/edit.html.erb_spec.rb": 0.118921112, + "spec/views/users/backup_code_setup/create.html.erb_spec.rb": 1.8739773180000001, + "spec/views/users/backup_code_setup/edit.html.erb_spec.rb": 0.014878821, + "spec/views/users/backup_code_setup/new.html.erb_spec.rb": 0.020541548, + "spec/views/users/backup_code_setup/reminder.html.erb_spec.rb": 0.021114731, + "spec/views/users/delete/show.html.erb_spec.rb": 0.14776277, + "spec/views/users/edit_phone/remove_phone.html.erb_spec.rb": 0.070102705, + "spec/views/users/emails/verify.html.erb_spec.rb": 0.04158389, + "spec/views/users/passwords/edit.html.erb_spec.rb": 0.038114696, + "spec/views/users/piv_cac/edit.html.erb_spec.rb": 0.102953429, + "spec/views/users/piv_cac_authentication_setup/new.html.erb_spec.rb": 0.050158485, + "spec/views/users/please_call/show.html.erb_spec.rb": 0.025204848000000002, + "spec/views/users/second_mfa_reminder/new.html.erb_spec.rb": 0.016648856, + "spec/views/users/service_provider_inactive/index.html.erb_spec.rb": 0.006634789, + "spec/views/users/shared/_otp_delivery_preference_selection.html.erb_spec.rb": 0.060802032, + "spec/views/users/totp_setup/new.html.erb_spec.rb": 0.192157806, + "spec/views/users/two_factor_authentication_setup/index.html.erb_spec.rb": 0.378686965, + "spec/views/users/webauthn/edit.html.erb_spec.rb": 0.127167178, + "spec/views/users/webauthn_setup/new.html.erb_spec.rb": 0.401343506, + "spec/views/vendor_outage/show.html.erb_spec.rb": 0.019859024000000003 } diff --git a/lib/identity_config.rb b/lib/identity_config.rb index 481f7230b01..8a22287bfba 100644 --- a/lib/identity_config.rb +++ b/lib/identity_config.rb @@ -372,6 +372,10 @@ def self.store config.add(:show_user_attribute_deprecation_warnings, type: :boolean) config.add(:short_term_phone_otp_max_attempts, type: :integer) config.add(:short_term_phone_otp_max_attempt_window_in_seconds, type: :integer) + config.add(:sign_in_user_id_per_ip_attempt_window_exponential_factor, type: :float) + config.add(:sign_in_user_id_per_ip_attempt_window_in_minutes, type: :integer) + config.add(:sign_in_user_id_per_ip_attempt_window_max_minutes, type: :integer) + config.add(:sign_in_user_id_per_ip_max_attempts, type: :integer) config.add(:sign_in_recaptcha_score_threshold, type: :float) config.add(:skip_encryption_allowed_list, type: :json) config.add(:sp_handoff_bounce_max_seconds, type: :integer) diff --git a/lib/tasks/dev.rake b/lib/tasks/dev.rake index 880a26e0361..e719bba7b1f 100644 --- a/lib/tasks/dev.rake +++ b/lib/tasks/dev.rake @@ -82,6 +82,7 @@ namespace :dev do desc 'Create in-person enrollments for N random users' task random_in_person_users: [:environment, :random_users] do is_enhanced_ipp = false + sponsor_id = IdentityConfig.store.usps_ipp_sponsor_id usps_request_delay_ms = (ENV['USPS_REQUEST_DELAY_MS'] || 0).to_i num_users = (ENV['NUM_USERS'] || 100).to_i pw = 'salty pickles' @@ -140,6 +141,7 @@ namespace :dev do user: user, status: :establishing, profile: profile, + sponsor_id: sponsor_id, ) enrollment.save! @@ -170,6 +172,7 @@ namespace :dev do enrollment_established_at: Time.zone.now - random.rand(0..5).days, unique_id: SecureRandom.hex(9), enrollment_code: SecureRandom.hex(16), + sponsor_id: sponsor_id, ) if raw_enrollment_status == InPersonEnrollment::STATUS_PASSED @@ -182,6 +185,7 @@ namespace :dev do InPersonEnrollment.create!( user: user, status: enrollment_status, + sponsor_id: sponsor_id, ) end progress&.increment diff --git a/public/acuant/11.9.3.508/AcuantCamera.min.js b/public/acuant/11.9.3.508/AcuantCamera.min.js new file mode 100644 index 00000000000..2a0594af164 --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantCamera.min.js @@ -0,0 +1 @@ +var AcuantCameraUI=function(){"use strict";let e=null,t=null,i=null,a=null,n={start:function(e,i){s=e.onError,i&&(g=i,g.text.hasOwnProperty("BIG_DOCUMENT")||(g.text.BIG_DOCUMENT="TOO CLOSE"));AcuantCamera.isCameraSupported?r||(r=!0,w(),function(e){let i=0,n=(new Date).getTime();a=document.getElementById("acuant-camera"),a&&a.addEventListener("acuantcameracreated",E);AcuantCamera.start((a=>{!function(e,t){if(t>=3)return!0;{let t=(new Date).getTime()-e;return t{y(),e.onCaptured(i),AcuantCamera.evaluateImage(i.data,i.width,i.height,i.isPortraitOrientation,t,(t=>{e.onCropped(t)}))}))}function A(e,t){y(),s&&s(e,t),s=null}function x(){!function a(){e&&!e.paused&&!e.ended&&r&&(!function(){if(i.clearRect(0,0,t.width,t.height),o)if(o.state===h)I("#00ff00"),D("rgba(0, 255, 0, 0.2)"),O(g.text.CAPTURING,.05,"#00ff00",!1);else if(o.state===m)I("#000000"),O(g.text.TAP_TO_CAPTURE);else if(o.state===AcuantCamera.DOCUMENT_STATE.GOOD_DOCUMENT)if(I("#ffff00"),D("rgba(255, 255, 0, 0.2)"),g.text.GOOD_DOCUMENT)O(g.text.GOOD_DOCUMENT,.09,"#ff0000",!1);else{let e=Math.ceil((f-((new Date).getTime()-c))/1e3);e<=0&&(e=1),O(e+"...",.09,"#ff0000",!1)}else o.state===AcuantCamera.DOCUMENT_STATE.SMALL_DOCUMENT?(I("#ff0000"),O(g.text.SMALL_DOCUMENT)):o.state===AcuantCamera.DOCUMENT_STATE.BIG_DOCUMENT?(I("#ff0000"),O(g.text.BIG_DOCUMENT)):(I("#000000"),O(g.text.NONE));else I("#000000"),O(g.text.NONE)}(),u=setTimeout(a,100))}()}function O(e,t=.04,a="#ffffff",n=!0){let r=k(),o=window.orientation,c=i.measureText(e),d=.01*Math.max(r.width,r.height),s=.02*Math.max(r.width,r.height),l=(r.height-s-c.width)/2,u=-(r.width/2-d),h=90;0!==o&&(h=0,l=(r.width-d-c.width)/2,u=r.height/2-s+.04*Math.max(r.width,r.height)),i.rotate(h*Math.PI/180),n&&(i.fillStyle="rgba(0, 0, 0, 0.5)",i.fillRect(Math.round(l-d),Math.round(u+d),Math.round(c.width+s),-Math.round(.05*Math.max(r.width,r.height)))),i.font=(Math.ceil(Math.max(r.width,r.height)*t)||0)+"px Sans-serif",i.fillStyle=a,i.fillText(e,l,u),S(e),i.rotate(-h*Math.PI/180)}const S=e=>{d||(d=document.createElement("p"),d.id="doc-state-text",d.style.height="1px",d.style.width="1px",d.style.margin="-1px",d.style.overflow="hidden",d.style.position="absolute",d.style.whiteSpace="nowrap",d.setAttribute("role","alert"),d.setAttribute("aria-live","assertive"),t.parentNode.insertBefore(d,t)),d.innerHTML!=e&&(d.innerHTML=e)};function k(){return{height:t.height,width:t.width}}function M(e,t){let a=window.orientation,n=k(),r=.08*n.width,o=.07*n.height;switch(0!==a&&(r=.07*n.width,o=.08*n.height),t.toString()){case"1":r=-r;break;case"2":r=-r,o=-o;break;case"3":o=-o}!function(e,t,a){i.beginPath();const n=Math.round(e.x),r=Math.round(e.y);i.moveTo(n,r),i.lineTo(Math.round(n+t),r),i.moveTo(n,r),i.lineTo(n,Math.round(r+a)),i.stroke()}(e,r,o)}function D(e){if(o&&o.points&&4===o.points.length){i.beginPath(),i.moveTo(Math.round(o.points[0].x),Math.round(o.points[0].y));for(let e=1;et.height?(a=.85*t.width,n=.85*t.width/1.5887,n>.85*t.height&&(a=a/n*.85*t.height,n=.85*t.height)):(a=.85*t.height/1.5887,n=.85*t.height,a>.85*t.width&&(n=n/a*.85*t.width,a=.85*t.width)),e=a/2,i=n/2,[{x:r.x-e,y:r.y-i},{x:r.x+e,y:r.y-i},{x:r.x+e,y:r.y+i},{x:r.x-e,y:r.y+i}].forEach(((e,t)=>{M(e,t)}))}}return n}(),AcuantCamera=(()=>{"use strict";let e=null,t=null,i=null,a=null,n=null,r=null;const o={NO_DOCUMENT:0,SMALL_DOCUMENT:1,BIG_DOCUMENT:2,GOOD_DOCUMENT:3},c={NONE:0,ID:1,PASSPORT:2},d=700,s=1920;let l,u,h=null,m=null,g=null,f=!1,p=!1,v=null,w={start:S,startManualCapture:k,triggerCapture:function(t){let i,a;try{if(0==e.videoWidth)throw"width 0";n.width=e.videoWidth,n.height=e.videoHeight,r.drawImage(e,0,0,n.width,n.height),i=r.getImageData(0,0,n.width,n.height),r.clearRect(0,0,n.width,n.height),a=window.matchMedia("(orientation: portrait)").matches}catch(e){return void ie()}t({data:i,width:n.width,height:n.height,isPortraitOrientation:a})},end:W,DOCUMENT_STATE:o,ACUANT_DOCUMENT_TYPE:c,isCameraSupported:"mediaDevices"in navigator&&function(){let e=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),(e||C())&&!y()}(),isIOSWebview:function(){const e=window.navigator.standalone,t=window.navigator.userAgent.toLowerCase(),i=/safari/.test(t);return/iphone|ipod|ipad/.test(t)&&!i&&!e}(),isIOS:C,setRepeatFrameProcessor:Z,evaluateImage:G};function y(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function C(){return/iPad|iPhone|iPod/.test(navigator.platform)&&_()[0]>=13||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1}function b(){let e;e=u||navigator.userAgent;const t=e.match(/SM-[N|G|S]\d{3}/);if(!t)return!1;const i=parseInt(t[0].match(/\d{3}/)[0],10),a=e.match(/SM-S\d{3}/)?900:970;return!isNaN(i)&&i>=a}const E=function(){let e={frameScale:1,primaryConstraints:{video:{facingMode:{exact:"environment"},aspectRatio:4/3,resizeMode:"none"}},fixedHeight:null,fixedWidth:null};C()?L()?(e.primaryConstraints.video.aspectRatio=1*Math.max(window.innerWidth,window.innerHeight)/Math.min(window.innerWidth,window.innerHeight),e.primaryConstraints.video.height={min:1440,ideal:2880}):N()?e.primaryConstraints.video.width={min:s,ideal:s}:e.primaryConstraints.video.height={min:1440,ideal:1440}:e.primaryConstraints.video.height={min:1440,ideal:1440};return e}();function T(t){j().then((()=>{f=!0,e.srcObject=t,function(){b()&&document.addEventListener("visibilitychange",z);window.addEventListener("resize",R),e&&(e.addEventListener("play",J),e.addEventListener("loadedmetadata",F))}(),e.play()}))}function A(e,t){document.cookie="AcuantCameraHasFailed="+t,W(),m&&"function"==typeof m?m(e,t):(console.error("No error callback set. Review implementation."),console.error(e,t))}function x(){return new Promise((e=>{navigator.mediaDevices.enumerateDevices().then((t=>{const i={suffix:void 0,device:void 0},a=t.find((e=>"Back Dual Wide Camera"===e.label));(function(){let e=_();return e&&-1!=e&&e.length>=1&&16==e[0]&&e[1]>=4})()&&a?i.device=a:t.filter((e=>"videoinput"===e.kind)).forEach((e=>{if(t=e.label,["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"].some((e=>t.includes(e)))){let t=e.label.split(","),a=parseInt(t[0][t[0].length-1]);(a||0===a)&&(void 0===i.suffix||i.suffix>a)&&(i.suffix=a,i.device=e)}var t})),e(i.device)})).catch((()=>{e()}))}))}function O(e,t=0){0===t&&l.dispatchEvent(new Event("acuantcameracreated"));const i=Boolean(e.video.deviceId);navigator.mediaDevices.getUserMedia(e).then((e=>{!i&&t<2?x().then((i=>{i&&i.deviceId!==e.getVideoTracks()[0].getSettings().deviceId?(E.primaryConstraints.video.deviceId=i.deviceId,U(e),O(E.primaryConstraints,t++)):T(e)})):T(e)})).catch((e=>{A(e,AcuantJavascriptWebSdk.START_FAIL_CODE)}))}function S(a,o,c){if(c&&(m=c),function(){let e="AcuantCameraHasFailed=";return decodeURIComponent(document.cookie).includes(e)}())return c("Live capture has previously failed and was called again. User was sent to manual capture.",AcuantJavascriptWebSdk.REPEAT_FAIL_CODE),void k(o);l=document.getElementById("acuant-camera"),l?(l.style.position="relative",l.innerHTML='',e=document.getElementById("acuant-player"),n=document.createElement("canvas"),r=n.getContext("2d",{willReadFrequently:!C()}),t=document.getElementById("acuant-ui-canvas"),f?A("already started.",AcuantJavascriptWebSdk.START_FAIL_CODE):e&&t?(i=t.getContext("2d"),a&&(h=a),navigator.userAgentData&&navigator.userAgentData.getHighEntropyValues?navigator.userAgentData.getHighEntropyValues(["model"]).then((e=>{"string"==typeof e?u=e:"string"==typeof e.model&&(u=e.model)})).finally((()=>{b()?E.primaryConstraints.video.zoom=2:P()&&(E.primaryConstraints.video.zoom=1.6),O(E.primaryConstraints)})):(b()?E.primaryConstraints.video.zoom=2:P()&&(E.primaryConstraints.video.zoom=1.6),O(E.primaryConstraints))):A("Missing HTML elements.",AcuantJavascriptWebSdk.START_FAIL_CODE)):A("Expected div with 'acuant-camera' id",AcuantJavascriptWebSdk.START_FAIL_CODE)}function k(e){g=e,a||(a=document.createElement("input"),a.type="file",a.capture="environment",a.accept="image/*",a.onclick=function(e){e&&e.target&&(e.target.value="")}),a.onchange=D,a.click()}let M=-1;function D(e){n=document.createElement("canvas"),r=n.getContext("2d"),r.mozImageSmoothingEnabled=!1,r.webkitImageSmoothingEnabled=!1,r.msImageSmoothingEnabled=!1,r.imageSmoothingEnabled=!1;let t=e.target,i=new FileReader;const a=e.target.files[0]&&e.target.files[0].name&&e.target.files[0].name.toLowerCase().endsWith(".heic");i.onload=a?e=>{var t;(t=e.target.result,new Promise(((e,i)=>{const a=window["magick-wasm"];a?a.initializeImageMagick().then((()=>{a.ImageMagick.read(new Uint8Array(t),(t=>{const{width:i,height:a}=I(t.width,t.height);n.width=i,n.height=a,t.resize(i,a),t.writeToCanvas(n);const o=r.getImageData(0,0,i,a);e({data:o,width:i,height:a})}))})):i({error:"HEIC image processing failed. Please make sure Image Magick scripts were integrated as expected.",code:AcuantJavascriptWebSdk.HEIC_NOT_SUPPORTED_CODE})}))).then((e=>{M=6,g.onCaptured(e),G(e.data,e.width,e.height,!1,"MANUAL",g.onCropped)})).catch((e=>g.onError(e.error,e.code)))}:e=>{M=function(e){const t=new DataView(e.target.result);if(65496!=t.getUint16(0,!1))return-2;const i=t.byteLength;let a=2;for(;a{const{width:e,height:i}=I(t.width,t.height);n.width=e,n.height=i,r.drawImage(t,0,0,e,i);const a=r.getImageData(0,0,e,i);r.clearRect(0,0,e,i),t.remove(),g.onCaptured({data:a,width:e,height:i}),G(a,e,i,!1,"MANUAL",g.onCropped)},t.src="data:image/jpeg;base64,"+ae(e.target.result)},t&&t.files[0]&&i.readAsArrayBuffer(t.files[0])}function I(e,t){let i=2560,a=1920;N()&&(i=s,a=Math.floor(1440));if((e>t?e:t)>i)if(e{e.stop()}))}function W(){f=!1,p=!1,M=-1,v&&(clearTimeout(v),v=null),function(){b()&&document.removeEventListener("visibilitychange",z);window.removeEventListener("resize",R),e&&(e.removeEventListener("play",J),e.removeEventListener("loadedmetadata",F))}(),e&&(e.pause(),e.srcObject&&U(e.srcObject),e=null),l&&(l.innerHTML=""),a&&(a.remove(),a=null)}function _(){if(/iP(hone|od|ad)/.test(navigator.platform))try{const e=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3]||0,10)]}catch(e){return-1}return-1}function N(){let e=_();return e&&-1!=e&&e.length>=1&&15==e[0]}function P(){let e=_();return e&&-1!=e&&e.length>=1&&e[0]>=17}function L(){let e=decodeURIComponent(document.cookie);if(e.includes("AcuantForceRegularCapture=true"))return!1;if(e.includes("AcuantForceDistantCapture=true"))return!0;if(function(){let e=_();return e&&-1!=e&&e.length>=1&&16==e[0]&&e[1]<4}()){let e=[screen.width,screen.height],t=Math.max(...e),i=Math.min(...e);if(852==t&&393==i)return!0;if(932==t&&430==i)return!0;if(844==t&&390==i)return!0;if(926==t&&428==i)return!0}return!1}function R(){i.clearRect(0,0,t.width,t.height),e&&(C()&&(function(){const e=window.navigator.userAgent,t=e.indexOf("WebKit")>-1,i=e.indexOf("CriOS")>-1;return t&&i&&C()}()||function(){let e=_();return e&&-1!=e&&e.length>=2&&14==e[0]&&e[1]>=4}())?(W(),S()):H())}function H(){let i,a;if(e.videoWidthE.fixedHeight&&(E.fixedHeight=l.clientWidth,E.fixedWidth=l.clientHeight),window.matchMedia("(orientation: portrait)").matches){if(E.fixedWidth)E.fixedWidth{AcuantJavascriptWebSdk.startMetricsWorker(e)}));const c=await Q(e,t,i),d=await K(r.image);r={...r,...c,...d},AcuantJavascriptWebSdk.endMetricsWorker();const{imageBase64:s,imageBytes:l}=$(r,a);r.image.bytes=l;const u=await Y(s);r.image.barcodeText=u;const h=await ee(r,a,s);await j();const m=await X(h);return r.image.data=m,V(),r}(e,t,i,n,a).then(r):async function(e,t,i,a,n){let r={isPortraitOrientation:n};const[o,c]=await Promise.all([q(e,t,i),Q(e,t,i)]);if(!o)return null;r={...r,...o};const d=await K(r.image);r={...r,...c,...d};const{imageBase64:s,imageBytes:l}=$(r,a);r.image.bytes=l;const u=await Y(s);r.image.barcodeText=u;const h=await ee(r,a,s),m=await X(h);return r.image.data=m,r}(e,t,i,n,a).then(r)}function j(){return new Promise((e=>{AcuantJavascriptWebSdk.startImageWorker(e)}))}function V(){AcuantJavascriptWebSdk.endImageWorker()}function q(e,t,i){return new Promise((a=>{AcuantJavascriptWebSdk.crop(e,t,i,{onSuccess:({image:e,dpi:t,cardType:i})=>a({image:e,dpi:t,cardType:i}),onFail:a})}))}function Q(e,t,i){return new Promise((a=>{AcuantJavascriptWebSdk.moire(e,t,i,{onSuccess:(e,t)=>a({moire:e,moireraw:t}),onFail:()=>a({moire:-1,moireraw:-1})})}))}function K(e){return new Promise((t=>{AcuantJavascriptWebSdk.metrics(e,e.width,e.height,{onSuccess:(e,i)=>t({sharpness:e,glare:i}),onFail:()=>t({sharpness:-1,glare:-1})})}))}function X(e){return new Promise((t=>{const i=function(e){const t=window.atob(e.split("base64,")[1]),i=t.length,a=new Uint8Array(new ArrayBuffer(i));for(let e=0;et("data:image/jpeg;base64,"+ae(e)),onFail:t})}))}async function Y(e){if(!document.getElementById(AcuantJavascriptWebSdk.BARCODE_READER_ID))return null;try{return await function(e){let t=e.split(","),i=t[0].match(/:(.*?);/)[1],a=atob(t[1]),n=a.length,r=new Uint8Array(n);for(;n--;)r[n]=a.charCodeAt(n);const o=new File([r],"imageFile",{type:i});return new Html5Qrcode(AcuantJavascriptWebSdk.BARCODE_READER_ID,{formatsToSupport:[Html5QrcodeSupportedFormats.PDF_417]}).scanFile(o,!1)}(e)}catch{return null}}function Z(){if(!f||p)return;if(0==e.videoWidth)return void ie();p=!0;let t=Math.max(e.videoWidth,e.videoHeight),i=Math.min(e.videoWidth,e.videoHeight),a=0,s=0;if(t>d&&i>500?e.videoWidth>=e.videoHeight?(E.frameScale=d/e.videoWidth,s=d,a=e.videoHeight*E.frameScale):(E.frameScale=d/e.videoHeight,s=e.videoWidth*E.frameScale,a=d):(E.frameScale=1,s=e.videoWidth,a=e.videoHeight),s==n.width&&a==n.height||(n.width=s,n.height=a),f){let t;try{r.drawImage(e,0,0,e.videoWidth,e.videoHeight,0,0,n.width,n.height),t=r.getImageData(0,0,n.width,n.height),r.clearRect(0,0,n.width,n.height)}catch(e){return void ie()}!function(t,i,a){AcuantJavascriptWebSdk.detect(t,i,a,{onSuccess:function(t){if(!n||!e||e.paused||e.ended)return;t.points.forEach((t=>{void 0!==t.x&&void 0!==t.y&&(t.x=t.x/E.frameScale*e.width/e.videoWidth,t.y=t.y/E.frameScale*e.height/e.videoHeight)}));const i=Math.min(t.dimensions.width,t.dimensions.height)/Math.min(n.width,n.height),a=Math.max(t.dimensions.width,t.dimensions.height)/Math.max(n.width,n.height),r=2==t.type;let d=.8,s=.85,l=.6,u=.65;r&&(d=.9,s=.95),C()&&(l=.65,u=.7,L()?r?(d=.72,s=.77,l=.22,u=.28):(d=.41,s=.45,l=.22,u=.28):r&&(d=.95,s=1,l=.7,u=.75));const m=!t.isCorrectAspectRatio||i=d||a>=s;t.type===c.NONE?t.state=o.NO_DOCUMENT:t.state=g?o.BIG_DOCUMENT:m?o.SMALL_DOCUMENT:o.GOOD_DOCUMENT,h(t),p=!1},onFail:function(){if(!n||!e||e.paused||e.ended)return;let t={};t.state=o.NO_DOCUMENT,h(t),p=!1}})}(t,n.width,n.height)}}function $({image:e,cardType:t,isPortraitOrientation:i},a){n&&r||(n=document.createElement("canvas"),r=n.getContext("2d")),n.width=e.width,n.height=e.height;let o=r.createImageData(e.width,e.height);!function(e,t){for(let i=0;i{AcuantJavascriptWebSdk.getCvmlVersion({onSuccess:t=>{e(t)},onFail:()=>{e("unknown")}})})),s=JSON.stringify({cvml:{cropping:{iscropped:!0,dpi:e,idsize:2===t?"ID3":"ID1",elapsed:-1},sharpness:{normalized:i,elapsed:-1},moire:{normalized:n,raw:r,elapsed:-1},glare:{normalized:a,elapsed:-1},version:d},device:{version:te(),capturetype:o}});return AcuantJavascriptWebSdk.addMetadata(c,{imageDescription:s,dateTimeOriginal:(new Date).toUTCString()})}function te(){const e=navigator.userAgent;let t,i=e.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(i[1])?(t=/\brv[ :]+(\d+)/g.exec(e)||[],"IE "+(t[1]||"")):"Chrome"===i[1]&&(t=e.match(/\b(OPR|Edge)\/(\d+)/),null!=t)?t.slice(1).join(" ").replace("OPR","Opera"):(i=i[2]?[i[1],i[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(t=e.match(/version\/(\d+)/i))&&i.splice(1,1,t[1]),i.join(" "))}function ie(){N()||navigator.maxTouchPoints&&navigator.maxTouchPoints>=2&&/MacIntel/.test(navigator.platform)?A("Camera capture failed due to unexpected sequence break. This usually indicates the camera closed or froze unexpectedly. In iOS 15+ this is intermittently occurs due to a GPU Highwater failure. Swap to manual capture until the user fully reloads the browser. Attempting to continue to use live capture can lead to further Highwater errors and can cause to OS to cut off the webpage.",AcuantJavascriptWebSdk.SEQUENCE_BREAK_CODE):A("Camera capture failed due to unexpected sequence break. This usually indicates the camera closed or froze unexpectedly. Swap to manual capture until the user fully reloads the browser.",AcuantJavascriptWebSdk.SEQUENCE_BREAK_CODE)}function ae(e){let t="";const i=new Uint8Array(e),a=i.byteLength;for(let e=0;e=e);)++r;if(16(a=224==(240&a)?(15&a)<<12|o<<6|i:(7&a)<<18|o<<12|i<<6|63&t[n++])?e+=String.fromCharCode(a):(a-=65536,e+=String.fromCharCode(55296|a>>10,56320|1023&a))}}else e+=String.fromCharCode(a)}return e}function T(t,n){return t?k(U,t,n):""}function S(t,n,r,e){if(!(0=i)i=65536+((1023&i)<<10)|1023&t.charCodeAt(++o);if(127>=i){if(r>=e)break;n[r++]=i}else{if(2047>=i){if(r+1>=e)break;n[r++]=192|i>>6}else{if(65535>=i){if(r+2>=e)break;n[r++]=224|i>>12}else{if(r+3>=e)break;n[r++]=240|i>>18,n[r++]=128|i>>12&63}n[r++]=128|i>>6&63}n[r++]=128|63&i}}return n[r]=0,r-a}function j(t){for(var n=0,r=0;r=e&&(e=65536+((1023&e)<<10)|1023&t.charCodeAt(++r)),127>=e?++n:n=2047>=e?n+2:65535>=e?n+3:n+4}return n}var R,C,U,W,E,P,Q,I,x,V="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function M(t,n){for(var r=t>>1,e=r+n/2;!(r>=e)&&E[r];)++r;if(32<(r<<=1)-t&&V)return V.decode(U.subarray(t,r));for(r="",e=0;!(e>=n/2);++e){var a=W[t+2*e>>1];if(0==a)break;r+=String.fromCharCode(a)}return r}function D(t,n,r){if(void 0===r&&(r=2147483647),2>r)return 0;var e=n;r=(r-=2)<2*t.length?r/2:t.length;for(var a=0;a>1]=t.charCodeAt(a),n+=2;return W[n>>1]=0,n-e}function F(t){return 2*t.length}function z(t,n){for(var r=0,e="";!(r>=n/4);){var a=P[t+4*r>>2];if(0==a)break;++r,65536<=a?(a-=65536,e+=String.fromCharCode(55296|a>>10,56320|1023&a)):e+=String.fromCharCode(a)}return e}function O(t,n,r){if(void 0===r&&(r=2147483647),4>r)return 0;var e=n;r=e+r-4;for(var a=0;a=o)o=65536+((1023&o)<<10)|1023&t.charCodeAt(++a);if(P[n>>2]=o,(n+=4)+4>r)break}return P[n>>2]=0,n-e}function q(t){for(var n=0,r=0;r=e&&++r,n+=4}return n}function B(){var t=g.buffer;R=t,r.HEAP8=C=new Int8Array(t),r.HEAP16=W=new Int16Array(t),r.HEAP32=P=new Int32Array(t),r.HEAPU8=U=new Uint8Array(t),r.HEAPU16=E=new Uint16Array(t),r.HEAPU32=Q=new Uint32Array(t),r.HEAPF32=I=new Float32Array(t),r.HEAPF64=x=new Float64Array(t)}var H,X=[],$=[],N=[];function Y(){var t=r.preRun.shift();X.unshift(t)}var Z,L,G,J=0,K=null,tt=null;function nt(t){throw r.onAbort&&r.onAbort(t),w(t),A=!0,t=new WebAssembly.RuntimeError("abort("+t+"). Build with -s ASSERTIONS=1 for more info."),a(t),t}function rt(){return Z.startsWith("data:application/octet-stream;base64,")}if(r.preloadedImages={},r.preloadedAudios={},Z="AcuantImageService.wasm",!rt()){var et=Z;Z=r.locateFile?r.locateFile(et,v):v+et}function at(){var t=Z;try{if(t==Z&&y)return new Uint8Array(y);if(c)return c(t);throw"both async and sync fetching of the wasm failed"}catch(t){nt(t)}}function ot(t){for(;0>2]=t},this.eb=function(){return P[this.Sa+4>>2]},this.Sb=function(t){P[this.Sa+8>>2]=t},this.Gb=function(){return P[this.Sa+8>>2]},this.Tb=function(){P[this.Sa>>2]=0},this.Ab=function(t){C[this.Sa+12>>0]=t?1:0},this.Fb=function(){return 0!=C[this.Sa+12>>0]},this.Bb=function(){C[this.Sa+13>>0]=0},this.Ib=function(){return 0!=C[this.Sa+13>>0]},this.Kb=function(t,n){this.Ub(t),this.Sb(n),this.Tb(),this.Ab(!1),this.Bb()},this.Cb=function(){P[this.Sa>>2]=P[this.Sa>>2]+1},this.Pb=function(){var t=P[this.Sa>>2];return P[this.Sa>>2]=t-1,1===t}}function ut(t){this.vb=function(){Cn(this.Sa),this.Sa=0},this.ob=function(t){P[this.Sa>>2]=t},this.cb=function(){return P[this.Sa>>2]},this.hb=function(t){P[this.Sa+4>>2]=t},this.jb=function(){return this.Sa+4},this.Eb=function(){return P[this.Sa+4>>2]},this.Hb=function(){if(Vn(this.kb().eb()))return P[this.cb()>>2];var t=this.Eb();return 0!==t?t:this.cb()},this.kb=function(){return new it(this.cb())},void 0===t?(this.Sa=Rn(8),this.hb(0)):this.Sa=t}var ft=[],ct=0;function st(t){return Cn(new it(t).Sa)}function lt(t,n){for(var r=0,e=t.length-1;0<=e;e--){var a=t[e];"."===a?t.splice(e,1):".."===a?(t.splice(e,1),r++):r&&(t.splice(e,1),r--)}if(n)for(;r;r--)t.unshift("..");return t}function ht(t){var n="/"===t.charAt(0),r="/"===t.substr(-1);return(t=lt(t.split("/").filter((function(t){return!!t})),!n).join("/"))||n||(t="."),t&&r&&(t+="/"),(n?"/":"")+t}function pt(t){var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=n[0],n=n[1],t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."}function dt(t){if("/"===t)return"/";var n=(t=(t=ht(t)).replace(/\/$/,"")).lastIndexOf("/");return-1===n?t:t.substr(n+1)}function vt(){for(var t="",n=!1,r=arguments.length-1;-1<=r&&!n;r--){if("string"!=typeof(n=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";t=n+"/"+t,n="/"===n.charAt(0)}return(n?"/":"")+(t=lt(t.split("/").filter((function(t){return!!t})),!n).join("/"))||"."}var mt=[];function wt(t,n){mt[t]={input:[],output:[],ab:n},qt(t,yt)}var yt={open:function(t){var n=mt[t.node.rdev];if(!n)throw new Ct(43);t.tty=n,t.seekable=!1},close:function(t){t.tty.ab.flush(t.tty)},flush:function(t){t.tty.ab.flush(t.tty)},read:function(t,n,r,e){if(!t.tty||!t.tty.ab.wb)throw new Ct(60);for(var a=0,o=0;o=n||(n=Math.max(n,r*(1048576>r?2:1.125)>>>0),0!=r&&(n=Math.max(n,256)),r=t.Qa,t.Qa=new Uint8Array(n),0=t.node.Ua)return 0;if(8<(t=Math.min(t.node.Ua-a,e))&&o.subarray)n.set(o.subarray(a,a+t),r);else for(e=0;en)throw new Ct(28);return n},pb:function(t,n,r){At.sb(t.node,n+r),t.node.Ua=Math.max(t.node.Ua,n+r)},xb:function(t,n,r,e,a,o){if(0!==n)throw new Ct(28);if(32768!=(61440&t.node.mode))throw new Ct(43);if(t=t.node.Qa,2&o||t.buffer!==R){if((0>>0)%jt.length}function Qt(t,n){var r;if(r=(r=Mt(t,"x"))?r:t.Ra.lookup?0:2)throw new Ct(r,t);for(r=jt[Pt(t.id,n)];r;r=r.Nb){var e=r.name;if(r.parent.id===t.id&&e===n)return r}return t.Ra.lookup(t,n)}function It(t,n,r,e){return n=Pt((t=new kn(t,n,r,e)).parent.id,t.name),t.Nb=jt[n],jt[n]=t}var xt={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function Vt(t){var n=["r","w","rw"][3&t];return 512&t&&(n+="w"),n}function Mt(t,n){return Rt?0:!n.includes("r")||292&t.mode?n.includes("w")&&!(146&t.mode)||n.includes("x")&&!(73&t.mode)?2:0:2}function Dt(t,n){try{return Qt(t,n),20}catch(t){}return Mt(t,"wx")}function Ft(t,n){tn||((tn=function(){}).prototype={});var r,e=new tn;for(r in t)e[r]=t[r];return t=e,n=function(t){for(t=t||0;t<=4096;t++)if(!Tt[t])return t;throw new Ct(33)}(n),t.fd=n,Tt[n]=t}var zt,Ot={open:function(t){t.Ta=kt[t.node.rdev].Ta,t.Ta.open&&t.Ta.open(t)},$a:function(){throw new Ct(70)}};function qt(t,n){kt[t]={Ta:n}}function Bt(t,n){var r="/"===n,e=!n;if(r&&_t)throw new Ct(10);if(!r&&!e){var a=Wt(n,{ub:!1});if(n=a.path,(a=a.node).gb)throw new Ct(10);if(16384!=(61440&a.mode))throw new Ct(54)}n={type:t,$b:{},yb:n,Mb:[]},(t=t.Xa(n)).Xa=n,n.root=t,r?_t=t:a&&(a.gb=n,a.Xa&&a.Xa.Mb.push(n))}function Ht(t,n,r){var e=Wt(t,{parent:!0}).node;if(!(t=dt(t))||"."===t||".."===t)throw new Ct(28);var a=Dt(e,t);if(a)throw new Ct(a);if(!e.Ra.fb)throw new Ct(63);return e.Ra.fb(e,t,n,r)}function Xt(t){return Ht(t,16895,0)}function $t(t,n,r){void 0===r&&(r=n,n=438),Ht(t,8192|n,r)}function Nt(t,n){if(!vt(t))throw new Ct(44);var r=Wt(n,{parent:!0}).node;if(!r)throw new Ct(44);var e=Dt(r,n=dt(n));if(e)throw new Ct(e);if(!r.Ra.symlink)throw new Ct(63);r.Ra.symlink(r,n,t)}function Yt(t){if(!(t=Wt(t).node))throw new Ct(44);if(!t.Ra.readlink)throw new Ct(28);return vt(Et(t.parent),t.Ra.readlink(t))}function Zt(t,n,e,a){if(""===t)throw new Ct(44);if("string"==typeof n){var o=xt[n];if(void 0===o)throw Error("Unknown file open mode: "+n);n=o}if(e=64&n?4095&(void 0===e?438:e)|32768:0,"object"==typeof t)var i=t;else{t=ht(t);try{i=Wt(t,{tb:!(131072&n)}).node}catch(t){}}if(o=!1,64&n)if(i){if(128&n)throw new Ct(20)}else i=Ht(t,e,0),o=!0;if(!i)throw new Ct(44);if(8192==(61440&i.mode)&&(n&=-513),65536&n&&16384!=(61440&i.mode))throw new Ct(54);if(!o&&(e=i?40960==(61440&i.mode)?32:16384==(61440&i.mode)&&("r"!==Vt(n)||512&n)?31:Mt(i,Vt(n)):44))throw new Ct(e);if(512&n){if(!(e="string"==typeof(e=i)?Wt(e,{tb:!0}).node:e).Ra.Wa)throw new Ct(63);if(16384==(61440&e.mode))throw new Ct(31);if(32768!=(61440&e.mode))throw new Ct(28);if(o=Mt(e,"w"))throw new Ct(o);e.Ra.Wa(e,{size:0,timestamp:Date.now()})}return n&=-131713,(a=Ft({node:i,path:Et(i),flags:n,seekable:!0,position:0,Ta:i.Ta,Vb:[],error:!1},a)).Ta.open&&a.Ta.open(a),!r.logReadFiles||1&n||(nn||(nn={}),t in nn||(nn[t]=1)),a}function Lt(t,n,r){if(null===t.fd)throw new Ct(8);if(!t.seekable||!t.Ta.$a)throw new Ct(70);if(0!=r&&1!=r&&2!=r)throw new Ct(28);t.position=t.Ta.$a(t,n,r),t.Vb=[]}function Gt(){Ct||((Ct=function(t,n){this.node=n,this.Rb=function(t){this.Za=t},this.Rb(t),this.message="FS error"}).prototype=Error(),Ct.prototype.constructor=Ct,[44].forEach((function(t){Ut[t]=new Ct(t),Ut[t].stack=""})))}function Jt(t,n,r){t=ht("/dev/"+t);var e=function(t,n){var r=0;return t&&(r|=365),n&&(r|=146),r}(!!n,!!r);Kt||(Kt=64);var a=Kt++<<8|0;qt(a,{open:function(t){t.seekable=!1},close:function(){r&&r.buffer&&r.buffer.length&&r(10)},read:function(t,r,e,a){for(var o=0,i=0;i>2]}function on(t){if(!(t=Tt[t]))throw new Ct(8);return t}function un(t){switch(t){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+t)}}var fn=void 0;function cn(t){for(var n="";U[t];)n+=fn[U[t++]];return n}var sn={},ln={},hn={};function pn(t){var n=Error,r=function(t,n){if(void 0===t)t="_unknown";else{var r=(t=t.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);t=48<=r&&57>=r?"_"+t:t}return new Function("body","return function "+t+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(n)}(t,(function(n){this.name=t,this.message=n,void 0!==(n=Error(n).stack)&&(this.stack=this.toString()+"\n"+n.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var dn=void 0;function vn(t){throw new dn(t)}function mn(t,n,r){if(r=r||{},!("argPackAdvance"in n))throw new TypeError("registerType registeredInstance requires argPackAdvance");var e=n.name;if(t||vn('type "'+e+'" must have a positive integer typeid pointer'),ln.hasOwnProperty(t)){if(r.Jb)return;vn("Cannot register type '"+e+"' twice")}ln[t]=n,delete hn[t],sn.hasOwnProperty(t)&&(n=sn[t],delete sn[t],n.forEach((function(t){t()})))}var wn=[],yn=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function bn(t){return this.fromWireType(Q[t>>2])}function gn(t){if(null===t)return"null";var n=typeof t;return"object"===n||"array"===n||"function"===n?t.toString():""+t}function An(t,n){switch(n){case 2:return function(t){return this.fromWireType(I[t>>2])};case 3:return function(t){return this.fromWireType(x[t>>3])};default:throw new TypeError("Unknown float type: "+t)}}function _n(t,n,r){switch(n){case 0:return r?function(t){return C[t]}:function(t){return U[t]};case 1:return r?function(t){return W[t>>1]}:function(t){return E[t>>1]};case 2:return r?function(t){return P[t>>2]}:function(t){return Q[t>>2]};default:throw new TypeError("Unknown integer type: "+t)}}function kn(t,n,r,e){t||(t=this),this.parent=t,this.Xa=t.Xa,this.gb=null,this.id=St++,this.name=n,this.mode=r,this.Ra={},this.Ta={},this.rdev=e}Object.defineProperties(kn.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(t){t?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(t){t?this.mode|=146:this.mode&=-147}}}),Gt(),jt=Array(4096),Bt(At,"/"),Xt("/tmp"),Xt("/home"),Xt("/home/web_user"),function(){Xt("/dev"),qt(259,{read:function(){return 0},write:function(t,n,r,e){return e}}),$t("/dev/null",259),wt(1280,bt),wt(1536,gt),$t("/dev/tty",1280),$t("/dev/tty1",1536);var t=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}if(d)try{var n=require("crypto");return function(){return n.randomBytes(1)[0]}}catch(t){}return function(){nt("randomDevice")}}();Jt("random",t),Jt("urandom",t),Xt("/dev/shm"),Xt("/dev/shm/tmp")}(),function(){Xt("/proc");var t=Xt("/proc/self");Xt("/proc/self/fd"),Bt({Xa:function(){var n=It(t,"fd",16895,73);return n.Ra={lookup:function(t,n){var r=Tt[+n];if(!r)throw new Ct(8);return(t={parent:null,Xa:{yb:"fake"},Ra:{readlink:function(){return r.path}}}).parent=t}},n}},"/proc/self/fd")}();for(var Tn=Array(256),Sn=0;256>Sn;++Sn)Tn[Sn]=String.fromCharCode(Sn);fn=Tn,dn=r.BindingError=pn("BindingError"),r.InternalError=pn("InternalError"),r.count_emval_handles=function(){for(var t=0,n=5;na?-28:Zt(e.path,e.flags,0,a).fd;case 1:case 2:return 0;case 3:return e.flags;case 4:return a=an(),e.flags|=a,0;case 12:return a=an(),W[a+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return P[Wn()>>2]=28,-1;default:return-28}}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},ma:function(t,n,r){en=r;try{var e=on(t);switch(n){case 21509:case 21505:return e.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return e.tty?0:-59;case 21519:if(!e.tty)return-59;var a=an();return P[a>>2]=0;case 21520:return e.tty?-28:-59;case 21531:if(t=a=an(),!e.Ta.Lb)throw new Ct(59);return e.Ta.Lb(e,n,t);case 21523:case 21524:return e.tty?0:-59;default:nt("bad ioctl syscall "+n)}}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},na:function(t,n,r){en=r;try{return Zt(T(t),n,r?an():0).fd}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),-t.Za}},ha:function(){},pa:function(t,n,r,e,a){var o=un(r);mn(t,{name:n=cn(n),fromWireType:function(t){return!!t},toWireType:function(t,n){return n?e:a},argPackAdvance:8,readValueFromPointer:function(t){if(1===r)var e=C;else if(2===r)e=W;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+n);e=P}return this.fromWireType(e[t>>o])},bb:null})},oa:function(t,n){mn(t,{name:n=cn(n),fromWireType:function(t){var n=yn[t].value;return 4>>u}}var f=n.includes("unsigned");mn(t,{name:n,fromWireType:o,toWireType:function(t,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+gn(r)+'" to '+this.name);if(ra)throw new TypeError('Passing a number "'+gn(r)+'" from JS side to C/C++ side to an argument of type "'+n+'", which is outside the valid range ['+e+", "+a+"]!");return f?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:_n(n,i,0!==e),bb:null})},r:function(t,n,r){function e(t){var n=Q;return new a(R,n[(t>>=2)+1],n[t])}var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][n];mn(t,{name:r=cn(r),fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{Jb:!0})},T:function(t,n){var r="std::string"===(n=cn(n));mn(t,{name:n,fromWireType:function(t){var n=Q[t>>2];if(r)for(var e=t+4,a=0;a<=n;++a){var o=t+4+a;if(a==n||0==U[o]){if(e=T(e,o-e),void 0===i)var i=e;else i+=String.fromCharCode(0),i+=e;e=o+1}}else{for(i=Array(n),a=0;a>2]=a,r&&e)S(n,U,o+4,a+1);else if(e)for(e=0;e>2],o=i(),f=t+4,c=0;c<=a;++c){var s=t+4+c*n;c!=a&&0!=o[s>>u]||(f=e(f,s-f),void 0===r?r=f:(r+=String.fromCharCode(0),r+=f),f=s+n)}return Cn(t),r},toWireType:function(t,e){"string"!=typeof e&&vn("Cannot pass non-string to C++ string type "+r);var i=o(e),f=Rn(4+i+n);return Q[f>>2]=i>>u,a(e,f+4,i+n),null!==t&&t.push(Cn,f),f},argPackAdvance:8,readValueFromPointer:bn,bb:function(t){Cn(t)}})},qa:function(t,n){mn(t,{Zb:!0,name:n=cn(n),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},ka:function(){nt()},ia:function(t,n,r){U.copyWithin(t,n,n+r)},ja:function(t){var n=U.length;if(2147483648<(t>>>=0))return!1;for(var r=1;4>=r;r*=2){var e=n*(1+.2/r);e=Math.min(e,t+100663296),0<(e=Math.max(t,e))%65536&&(e+=65536-e%65536);t:{try{g.grow(Math.min(2147483648,e)-R.byteLength+65535>>>16),B();var a=1;break t}catch(t){}a=void 0}if(a)return!0}return!1},R:function(t){try{var n=on(t);if(null===n.fd)throw new Ct(8);n.lb&&(n.lb=null);try{n.Ta.close&&n.Ta.close(n)}catch(t){throw t}finally{Tt[n.fd]=null}return n.fd=null,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},la:function(t,n,r,e){try{t:{for(var a=on(t),o=t=0;o>2],u=a,f=P[n+8*o>>2],c=i,s=void 0,l=C;if(0>c||0>s)throw new Ct(28);if(null===u.fd)throw new Ct(8);if(1==(2097155&u.flags))throw new Ct(8);if(16384==(61440&u.node.mode))throw new Ct(31);if(!u.Ta.read)throw new Ct(28);var h=void 0!==s;if(h){if(!u.seekable)throw new Ct(70)}else s=u.position;var p=u.Ta.read(u,l,f,c,s);h||(u.position+=p);var d=p;if(0>d){var v=-1;break t}if(t+=d,d>2]=v,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},ga:function(t,n,r,e,a){try{var o=on(t);return-9007199254740992>=(t=4294967296*r+(n>>>0))||9007199254740992<=t?-61:(Lt(o,t,e),G=[o.position>>>0,(L=o.position,1<=+Math.abs(L)?0>>0:~~+Math.ceil((L-+(~~L>>>0))/4294967296)>>>0:0)],P[a>>2]=G[0],P[a+4>>2]=G[1],o.lb&&0===t&&0===e&&(o.lb=null),0)}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},P:function(t,n,r,e){try{t:{for(var a=on(t),o=t=0;o>2],f=P[n+(8*o+4)>>2],c=void 0,s=C;if(0>f||0>c)throw new Ct(28);if(null===i.fd)throw new Ct(8);if(0==(2097155&i.flags))throw new Ct(8);if(16384==(61440&i.node.mode))throw new Ct(31);if(!i.Ta.write)throw new Ct(28);i.seekable&&1024&i.flags&&Lt(i,0,2);var l=void 0!==c;if(l){if(!i.seekable)throw new Ct(70)}else c=i.position;var h=i.Ta.write(i,s,u,f,c,void 0);l||(i.position+=h);var p=h;if(0>p){var d=-1;break t}t+=p}d=t}return P[e>>2]=d,0}catch(t){return void 0!==rn&&t instanceof Ct||nt(t),t.Za}},b:function(){return b},N:function(t,n){var r=En();try{return H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},L:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ta:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},Z:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},sa:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},$:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},F:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},m:function(t,n){var r=En();try{return H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},H:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},O:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ba:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},a:function(t,n,r){var e=En();try{return H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},C:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ua:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},X:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ca:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},j:function(t,n,r,e){var a=En();try{return H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},U:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},i:function(t,n,r,e,a){var o=En();try{return H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},aa:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},A:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},u:function(t,n,r,e,a,o){var i=En();try{return H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},_:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},v:function(t,n,r,e,a,o,i){var u=En();try{return H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},fa:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},w:function(t,n,r,e,a,o,i,u){var f=En();try{return H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},y:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},D:function(t,n,r,e,a,o,i,u,f,c,s,l,h){var p=En();try{return H.get(t)(n,r,e,a,o,i,u,f,c,s,l,h)}catch(t){if(Pn(p),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},I:function(t){var n=En();try{H.get(t)()}catch(t){if(Pn(n),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},g:function(t,n){var r=En();try{H.get(t)(n)}catch(t){if(Pn(r),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},da:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},V:function(t,n,r){var e=En();try{H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},wa:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},k:function(t,n,r){var e=En();try{H.get(t)(n,r)}catch(t){if(Pn(e),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},l:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},ra:function(t,n,r,e,a,o,i,u){var f=En();try{H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},B:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},Y:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},f:function(t,n,r,e){var a=En();try{H.get(t)(n,r,e)}catch(t){if(Pn(a),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},va:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},h:function(t,n,r,e,a){var o=En();try{H.get(t)(n,r,e,a)}catch(t){if(Pn(o),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},q:function(t,n,r,e,a,o){var i=En();try{H.get(t)(n,r,e,a,o)}catch(t){if(Pn(i),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},W:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},s:function(t,n,r,e,a,o,i){var u=En();try{H.get(t)(n,r,e,a,o,i)}catch(t){if(Pn(u),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},p:function(t,n,r,e,a,o,i,u){var f=En();try{H.get(t)(n,r,e,a,o,i,u)}catch(t){if(Pn(f),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},G:function(t,n,r,e,a,o,i,u,f,c){var s=En();try{H.get(t)(n,r,e,a,o,i,u,f,c)}catch(t){if(Pn(s),t!==t+0&&"longjmp"!==t)throw t;In(1,0)}},E:function(t){return t}};!function(){function t(t){r.asm=t.exports,g=r.asm.xa,B(),H=r.asm.Ea,$.unshift(r.asm.ya),J--,r.monitorRunDependencies&&r.monitorRunDependencies(J),0==J&&(null!==K&&(clearInterval(K),K=null),tt&&(t=tt,tt=null,t()))}function n(n){t(n.instance)}function e(t){return function(){if(!y&&(h||p)){if("function"==typeof fetch&&!Z.startsWith("file://"))return fetch(Z,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+Z+"'";return t.arrayBuffer()})).catch((function(){return at()}));if(f)return new Promise((function(t,n){f(Z,(function(n){t(new Uint8Array(n))}),n)}))}return Promise.resolve().then((function(){return at()}))}().then((function(t){return WebAssembly.instantiate(t,o)})).then((function(t){return t})).then(t,(function(t){w("failed to asynchronously prepare wasm: "+t),nt(t)}))}var o={a:jn};if(J++,r.monitorRunDependencies&&r.monitorRunDependencies(J),r.instantiateWasm)try{return r.instantiateWasm(o,t)}catch(t){return w("Module.instantiateWasm callback failed with error: "+t),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||rt()||Z.startsWith("file://")||"function"!=typeof fetch?e(n):fetch(Z,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,o).then(n,(function(t){return w("wasm streaming compile failed: "+t),w("falling back to ArrayBuffer instantiation"),e(n)}))}))).catch(a)}(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.ya).apply(null,arguments)},r._acuantDetect=function(){return(r._acuantDetect=r.asm.za).apply(null,arguments)},r._acuantCrop=function(){return(r._acuantCrop=r.asm.Aa).apply(null,arguments)},r._acuantSign=function(){return(r._acuantSign=r.asm.Ba).apply(null,arguments)},r._acuantVerify=function(){return(r._acuantVerify=r.asm.Ca).apply(null,arguments)},r._getAcuantCVMLVersion=function(){return(r._getAcuantCVMLVersion=r.asm.Da).apply(null,arguments)};var Rn=r._malloc=function(){return(Rn=r._malloc=r.asm.Fa).apply(null,arguments)},Cn=r._free=function(){return(Cn=r._free=r.asm.Ga).apply(null,arguments)};r.___getTypeName=function(){return(r.___getTypeName=r.asm.Ha).apply(null,arguments)},r.___embind_register_native_and_builtin_types=function(){return(r.___embind_register_native_and_builtin_types=r.asm.Ia).apply(null,arguments)};var Un,Wn=r.___errno_location=function(){return(Wn=r.___errno_location=r.asm.Ja).apply(null,arguments)},En=r.stackSave=function(){return(En=r.stackSave=r.asm.Ka).apply(null,arguments)},Pn=r.stackRestore=function(){return(Pn=r.stackRestore=r.asm.La).apply(null,arguments)},Qn=r.stackAlloc=function(){return(Qn=r.stackAlloc=r.asm.Ma).apply(null,arguments)},In=r._setThrew=function(){return(In=r._setThrew=r.asm.Na).apply(null,arguments)},xn=r.___cxa_can_catch=function(){return(xn=r.___cxa_can_catch=r.asm.Oa).apply(null,arguments)},Vn=r.___cxa_is_pointer_type=function(){return(Vn=r.___cxa_is_pointer_type=r.asm.Pa).apply(null,arguments)};function Mn(){function t(){if(!Un&&(Un=!0,r.calledRun=!0,!A)){if(r.noFSInit||zt||(zt=!0,Gt(),r.stdin=r.stdin,r.stdout=r.stdout,r.stderr=r.stderr,r.stdin?Jt("stdin",r.stdin):Nt("/dev/tty","/dev/stdin"),r.stdout?Jt("stdout",null,r.stdout):Nt("/dev/tty","/dev/stdout"),r.stderr?Jt("stderr",null,r.stderr):Nt("/dev/tty1","/dev/stderr"),Zt("/dev/stdin",0),Zt("/dev/stdout",1),Zt("/dev/stderr",1)),Rt=!1,ot($),e(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;){var t=r.postRun.shift();N.unshift(t)}ot(N)}}if(!(0>0];case"i16":return W[t>>1];case"i32":case"i64":return P[t>>2];case"float":return I[t>>2];case"double":return x[t>>3];default:nt("invalid type for getValue: "+n)}return null},tt=function t(){Un||Mn(),Un||(tt=t)},r.run=Mn,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);0{function t(t,a,r,n,i){let s={func:"crop"};if(r>=0){const o=new ArrayBuffer(a);let l=new Uint8Array(o);l.set(e.HEAPU8.subarray(t,t+a),0),s.imgData=l,s.width=r,s.height=n,s.type=i}else switch(r){case-1:s.error="Runtime error.";break;case-2:s.error="Detect (for cropping) did not return OK";break;case-3:s.error="Crop did not return OK";break;default:s.error="Unknown Error Occured"}s&&s.imgData&&s.imgData.buffer?postMessage(s,[s.imgData.buffer]):postMessage(s)}function a(e,t,a,r,n,i,s,o,l){let c={func:"detect"};if(t>=0)c.type=e,c.x1=t,c.y1=a,c.x2=r,c.y2=n,c.x3=i,c.y3=s,c.x4=o,c.y4=l;else switch(t){case-1:c.error="Runtime error.";break;case-2:c.error="Detect did not return OK";break;default:c.error="Unknown Error Occured"}postMessage(c)}function r(t,a){let r={func:"sign"};if(t){const n=new ArrayBuffer(a);let i=new Uint8Array(n);i.set(e.HEAPU8.subarray(t,t+a),0),r.imgData=i}else switch(a){case-1:r.error="Failed to sign image: SIGN_PARSE_ERROR";break;case-2:r.error="Failed to sign image: SIGN_CANNOT_SIGN";break;case-3:r.error="Failed to sign image: SIGN_HASH_ERROR";break;default:r.error="Failed to sign image: UNEXPECTED"}r&&r.imgData&&r.imgData.buffer?postMessage(r,[r.imgData.buffer]):postMessage(r)}function n(e){postMessage({func:"verify",result:e})}function i(t){null!=t&&(e._free(t),t=null)}function s(t){let a=e._malloc(t.length*t.BYTES_PER_ELEMENT);return e.HEAPU8.set(t,a),a}onmessage=o=>{if(o&&o.data)if("crop"===o.data.func){let a=o.data.data;if(a.imgData&&a.width&&a.height){let r=s(a.imgData);const n=e.ccall("acuantCrop","number",["number","number","number"],[r,a.width,a.height]);let o=[];for(let t=0;t<5;t++)o[t]=e.getValue(n+4*t,"i32");t(o[0],o[1],o[2],o[3],o[4]),i(r)}else console.error("missing params"),t(-1,-1,-1,-1)}else if("detect"===o.data.func){let t=o.data.data;if(t.imgData&&t.width&&t.height){let r=s(t.imgData);const n=e.ccall("acuantDetect","number",["number","number","number"],[r,t.width,t.height]);let o=[];for(let t=0;t<9;t++)o[t]=e.getValue(n+4*t,"i32");a(o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7],o[8]),i(r)}else console.error("missing params"),a(-1,-1,-1,-1,-1,-1,-1,-1,-1)}else if("sign"===o.data.func){let t=o.data.data;if(t.imgData){let a=s(t.imgData);const n=e.ccall("acuantSign","number",["number","number"],[a,t.imgData.byteLength]);let o=[];for(let t=0;t<2;t++)o[t]=e.getValue(n+4*t,"i32");i(a),r(o[0],o[1])}else console.error("missing params"),r(null,-1)}else if("verify"==o.data.func){let t=o.data.data;if(t.imgData){let a=s(t.imgData);const r=e.ccall("acuantVerify","boolean",["number","number"],[a,t.imgData.byteLength]);i(a),n(r)}else console.log("missing params"),n(null)}else if("getCvmlVersion"===o.data.func){!function(e){postMessage({func:"getCvmlVersion",cvmlVersion:e})}(e.ccall("getAcuantCVMLVersion","string",[],[])||"")}else console.error("called with no func specified")},postMessage({imageWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.3.508/AcuantInitializerService.min.js b/public/acuant/11.9.3.508/AcuantInitializerService.min.js new file mode 100644 index 00000000000..70d1f50c0f8 --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantInitializerService.min.js @@ -0,0 +1 @@ +var AcuantInitializerModule=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(e=e||__filename),function(t){var r,n,o=void 0!==(t=t||{})?t:{};o.ready=new Promise((function(e,t){r=e,n=t})),Object.getOwnPropertyDescriptor(o.ready,"_initialize")||(Object.defineProperty(o.ready,"_initialize",{configurable:!0,get:function(){je("You are getting _initialize on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initialize",{configurable:!0,set:function(){je("You are setting _initialize on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_initializeWithToken")||(Object.defineProperty(o.ready,"_initializeWithToken",{configurable:!0,get:function(){je("You are getting _initializeWithToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initializeWithToken",{configurable:!0,set:function(){je("You are setting _initializeWithToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_get_end")||(Object.defineProperty(o.ready,"_emscripten_stack_get_end",{configurable:!0,get:function(){je("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_get_end",{configurable:!0,set:function(){je("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_get_free")||(Object.defineProperty(o.ready,"_emscripten_stack_get_free",{configurable:!0,get:function(){je("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_get_free",{configurable:!0,set:function(){je("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_emscripten_stack_init")||(Object.defineProperty(o.ready,"_emscripten_stack_init",{configurable:!0,get:function(){je("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_emscripten_stack_init",{configurable:!0,set:function(){je("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackSave")||(Object.defineProperty(o.ready,"_stackSave",{configurable:!0,get:function(){je("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackSave",{configurable:!0,set:function(){je("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackRestore")||(Object.defineProperty(o.ready,"_stackRestore",{configurable:!0,get:function(){je("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackRestore",{configurable:!0,set:function(){je("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_stackAlloc")||(Object.defineProperty(o.ready,"_stackAlloc",{configurable:!0,get:function(){je("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_stackAlloc",{configurable:!0,set:function(){je("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___wasm_call_ctors")||(Object.defineProperty(o.ready,"___wasm_call_ctors",{configurable:!0,get:function(){je("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___wasm_call_ctors",{configurable:!0,set:function(){je("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_fflush")||(Object.defineProperty(o.ready,"_fflush",{configurable:!0,get:function(){je("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_fflush",{configurable:!0,set:function(){je("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___errno_location")||(Object.defineProperty(o.ready,"___errno_location",{configurable:!0,get:function(){je("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___errno_location",{configurable:!0,set:function(){je("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_malloc")||(Object.defineProperty(o.ready,"_malloc",{configurable:!0,get:function(){je("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_malloc",{configurable:!0,set:function(){je("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_free")||(Object.defineProperty(o.ready,"_free",{configurable:!0,get:function(){je("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_free",{configurable:!0,set:function(){je("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___cxa_is_pointer_type")||(Object.defineProperty(o.ready,"___cxa_is_pointer_type",{configurable:!0,get:function(){je("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___cxa_is_pointer_type",{configurable:!0,set:function(){je("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___cxa_can_catch")||(Object.defineProperty(o.ready,"___cxa_can_catch",{configurable:!0,get:function(){je("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___cxa_can_catch",{configurable:!0,set:function(){je("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_setThrew")||(Object.defineProperty(o.ready,"_setThrew",{configurable:!0,get:function(){je("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_setThrew",{configurable:!0,set:function(){je("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getCreds")||(Object.defineProperty(o.ready,"_getCreds",{configurable:!0,get:function(){je("You are getting _getCreds on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getCreds",{configurable:!0,set:function(){je("You are setting _getCreds on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getOauthToken")||(Object.defineProperty(o.ready,"_getOauthToken",{configurable:!0,get:function(){je("You are getting _getOauthToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getOauthToken",{configurable:!0,set:function(){je("You are setting _getOauthToken on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_getEndpoint")||(Object.defineProperty(o.ready,"_getEndpoint",{configurable:!0,get:function(){je("You are getting _getEndpoint on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_getEndpoint",{configurable:!0,set:function(){je("You are setting _getEndpoint on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_callback")||(Object.defineProperty(o.ready,"_callback",{configurable:!0,get:function(){je("You are getting _callback on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_callback",{configurable:!0,set:function(){je("You are setting _callback on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"_initialize_internal")||(Object.defineProperty(o.ready,"_initialize_internal",{configurable:!0,get:function(){je("You are getting _initialize_internal on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"_initialize_internal",{configurable:!0,set:function(){je("You are setting _initialize_internal on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___getTypeName")||(Object.defineProperty(o.ready,"___getTypeName",{configurable:!0,get:function(){je("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___getTypeName",{configurable:!0,set:function(){je("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(o.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get:function(){je("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set:function(){je("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(o.ready,"onRuntimeInitialized")||(Object.defineProperty(o.ready,"onRuntimeInitialized",{configurable:!0,get:function(){je("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(o.ready,"onRuntimeInitialized",{configurable:!0,set:function(){je("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s=[],c="object"==typeof window,d="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,u=!c&&!p&&!d;if(o.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var l,E,O,f,_,g="";function T(e){return o.locateFile?o.locateFile(e,g):g+e}if(p){if("object"!=typeof process||"function"!=typeof require)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?require("path").dirname(g)+"/":__dirname+"/",l=function(e,t){return f||(f=require("fs")),_||(_=require("path")),e=_.normalize(e),f.readFileSync(e,t?null:"utf8")},O=function(e){var t=l(e,!0);return t.buffer||(t=new Uint8Array(t)),x(t.buffer),t},E=function(e,t,r){f||(f=require("fs")),_||(_=require("path")),e=_.normalize(e),f.readFile(e,(function(e,n){e?r(e):t(n.buffer)}))},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),s=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Ur))throw e})),process.on("unhandledRejection",je),function(e,t){if(De())throw process.exitCode=e,t;process.exit(e)},o.inspect=function(){return"[Emscripten Module object]"}}else if(u){if("object"==typeof process&&"function"==typeof require||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(l=function(e){return read(e)}),O=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(x("object"==typeof(t=read(e,"binary"))),t)},E=function(e,t,r){setTimeout((function(){t(O(e))}),0)},"undefined"!=typeof scriptArgs?s=scriptArgs:void 0!==arguments&&(s=arguments),"function"==typeof quit&&function(e){quit(e)},"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!c&&!d)throw new Error("environment detection error");if(d?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),e&&(g=e),g=0!==g.indexOf("blob:")?g.substr(0,g.lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");l=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(O=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),E=function(e,t,r){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):r()},n.onerror=r,n.send(null)},function(e){document.title=e}}o.print||console.log.bind(console);var h=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments&&(s=o.arguments),Object.getOwnPropertyDescriptor(o,"arguments")||Object.defineProperty(o,"arguments",{configurable:!0,get:function(){je("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),o.thisProgram&&o.thisProgram,Object.getOwnPropertyDescriptor(o,"thisProgram")||Object.defineProperty(o,"thisProgram",{configurable:!0,get:function(){je("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),o.quit&&o.quit,Object.getOwnPropertyDescriptor(o,"quit")||Object.defineProperty(o,"quit",{configurable:!0,get:function(){je("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),x(void 0===o.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),x(void 0===o.read,"Module.read option was removed (modify read_ in JS)"),x(void 0===o.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),x(void 0===o.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),x(void 0===o.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),x(void 0===o.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(o,"read")||Object.defineProperty(o,"read",{configurable:!0,get:function(){je("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"readAsync")||Object.defineProperty(o,"readAsync",{configurable:!0,get:function(){je("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"readBinary")||Object.defineProperty(o,"readBinary",{configurable:!0,get:function(){je("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(o,"setWindowTitle")||Object.defineProperty(o,"setWindowTitle",{configurable:!0,get:function(){je("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}});x(!u,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function D(e){D.shown||(D.shown={}),D.shown[e]||(D.shown[e]=1,h(e))}function w(e,t){if("function"==typeof WebAssembly.Function){for(var r={i:"i32",j:"i64",f:"f32",d:"f64"},n={parameters:[],results:"v"==t[0]?[]:[r[t[0]]]},o=1;o=n);)++o;if(o-t>16&&e.subarray&&k)return k.decode(e.subarray(t,o));for(var i="";t>10,56320|1023&d)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function Q(e,t){return e?X(Y,e,t):""}function C(e,t,r,n){if(!(n>0))return 0;for(var o=r,i=r+n-1,a=0;a=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(r>=i)break;t[r++]=s}else if(s<=2047){if(r+1>=i)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=i)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=i)break;s>1114111&&D("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-o}function L(e,t,r){return x("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),C(e,Y,t,r)}function W(e){for(var t=0,r=0;r=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}var G,z,Y,B,V,Z,q,K,J,$="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function ee(e,t){x(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e,n=r>>1,o=n+t/2;!(n>=o)&&V[n];)++n;if((r=n<<1)-e>32&&$)return $.decode(Y.subarray(e,r));for(var i="",a=0;!(a>=t/2);++a){var s=B[e+2*a>>1];if(0==s)break;i+=String.fromCharCode(s)}return i}function te(e,t,r){if(x(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),x("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),r<2)return 0;for(var n=t,o=(r-=2)<2*e.length?r/2:e.length,i=0;i>1]=a,t+=2}return B[t>>1]=0,t-n}function re(e){return 2*e.length}function ne(e,t){x(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,n="";!(r>=t/4);){var o=Z[e+4*r>>2];if(0==o)break;if(++r,o>=65536){var i=o-65536;n+=String.fromCharCode(55296|i>>10,56320|1023&i)}else n+=String.fromCharCode(o)}return n}function oe(e,t,r){if(x(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),x("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),r<4)return 0;for(var n=t,o=n+r-4,i=0;i=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(Z[t>>2]=a,(t+=4)+4>o)break}return Z[t>>2]=0,t-n}function ie(e){for(var t=0,r=0;r=55296&&n<=57343&&++r,t+=4}return t}function ae(e,t){x(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),z.set(e,t)}function se(e,t){return e%t>0&&(e+=t-e%t),e}function ce(e){G=e,o.HEAP8=z=new Int8Array(e),o.HEAP16=B=new Int16Array(e),o.HEAP32=Z=new Int32Array(e),o.HEAPU8=Y=new Uint8Array(e),o.HEAPU16=V=new Uint16Array(e),o.HEAPU32=q=new Uint32Array(e),o.HEAPF32=K=new Float32Array(e),o.HEAPF64=J=new Float64Array(e)}var de=5242880;o.TOTAL_STACK&&x(de===o.TOTAL_STACK,"the stack size can no longer be determined at runtime");var pe,ue=o.INITIAL_MEMORY||16777216;function le(){var e=Pr();x(0==(3&e)),q[1+(e>>2)]=34821223,q[2+(e>>2)]=2310721022,Z[0]=1668509029}function Ee(){if(!U){var e=Pr(),t=q[1+(e>>2)],r=q[2+(e>>2)];34821223==t&&2310721022==r||je("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" "+t.toString(16)),1668509029!==Z[0]&&je("Runtime error: The application has corrupted its heap memory area (address zero)!")}}Object.getOwnPropertyDescriptor(o,"INITIAL_MEMORY")||Object.defineProperty(o,"INITIAL_MEMORY",{configurable:!0,get:function(){je("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),x(ue>=de,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+ue+"! (TOTAL_STACK="+de+")"),x("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),x(!o.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),x(16777216==ue,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"}();var Oe=[],fe=[],_e=[],ge=!1,Te=!1,he=0;function De(){return j||he>0}function we(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)Pe(o.preRun.shift());Ge(Oe)}function ye(){Ee(),x(!ge),ge=!0,Ge(fe)}function be(){if(Ee(),o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)Me(o.postRun.shift());Ge(_e)}function Pe(e){Oe.unshift(e)}function Re(e){fe.unshift(e)}function Me(e){_e.unshift(e)}x(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),x(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var me=0,Se=null,Ae=null,Fe={};function Ie(e){me++,o.monitorRunDependencies&&o.monitorRunDependencies(me),e?(x(!Fe[e]),Fe[e]=1,null===Se&&"undefined"!=typeof setInterval&&(Se=setInterval((function(){if(U)return clearInterval(Se),void(Se=null);var e=!1;for(var t in Fe)e||(e=!0,h("still waiting on run dependencies:")),h("dependency: "+t);e&&h("(end of list)")}),1e4))):h("warning: run dependency added without ID")}function ve(e){if(me--,o.monitorRunDependencies&&o.monitorRunDependencies(me),e?(x(Fe[e]),delete Fe[e]):h("warning: run dependency removed without ID"),0==me&&(null!==Se&&(clearInterval(Se),Se=null),Ae)){var t=Ae;Ae=null,t()}}function je(e){o.onAbort&&o.onAbort(e),h(e+=""),U=!0,1,e="abort("+e+") at "+Ve();var t=new WebAssembly.RuntimeError(e);throw n(t),t}o.preloadedImages={},o.preloadedAudios={};var Ue={error:function(){je("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){Ue.error()},createDataFile:function(){Ue.error()},createPreloadedFile:function(){Ue.error()},createLazyFile:function(){Ue.error()},open:function(){Ue.error()},mkdev:function(){Ue.error()},registerDevice:function(){Ue.error()},analyzePath:function(){Ue.error()},loadFilesFromDB:function(){Ue.error()},ErrnoError:function(){Ue.error()}};o.FS_createDataFile=Ue.createDataFile,o.FS_createPreloadedFile=Ue.createPreloadedFile;var xe,Ne="data:application/octet-stream;base64,";function He(e){return e.startsWith(Ne)}function ke(e){return e.startsWith("file://")}function Xe(e,t){return function(){var r=e,n=t;return t||(n=o.asm),x(ge,"native function `"+r+"` called before runtime initialization"),x(!Te,"native function `"+r+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n[e]||x(n[e],"exported native function `"+r+"` not found"),n[e].apply(null,arguments)}}function Qe(e){try{if(e==xe&&S)return new Uint8Array(S);if(O)return O(e);throw"both async and sync fetching of the wasm failed"}catch(e){je(e)}}function Ce(){if(!S&&(c||d)){if("function"==typeof fetch&&!ke(xe))return fetch(xe,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+xe+"'";return e.arrayBuffer()})).catch((function(){return Qe(xe)}));if(E)return new Promise((function(e,t){E(xe,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Qe(xe)}))}function Le(){var e={env:gr,wasi_snapshot_preview1:gr};function t(e,t){var r=e.exports;o.asm=r,x(v=o.asm.memory,"memory not found in wasm exports"),ce(v.buffer),x(pe=o.asm.__indirect_function_table,"table not found in wasm exports"),Re(o.asm.__wasm_call_ctors),ve("wasm-instantiate")}Ie("wasm-instantiate");var r=o;function i(e){x(o===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(e.instance)}function a(t){return Ce().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){h("failed to asynchronously prepare wasm: "+e),ke(xe)&&h("warning: Loading from a file URI ("+xe+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),je(e)}))}if(o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(e){return h("Module.instantiateWasm callback failed with error: "+e),!1}return(S||"function"!=typeof WebAssembly.instantiateStreaming||He(xe)||ke(xe)||"function"!=typeof fetch?a(i):fetch(xe,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){return h("wasm streaming compile failed: "+e),h("falling back to ArrayBuffer instantiation"),a(i)}))}))).catch(n),{}}He(xe="AcuantInitializerService.wasm")||(xe=T(xe));var We={3924:function(){let e=function(e){try{return JSON.parse(e)}catch(e){return}},r=function(r){let n=(""+r).split(".");if(3==n.length){let r=e(atob(n[0])),o=e(atob(n[1])),i=n[2];if(r&&o&&i&&r.kid&&r.alg&&o.sub&&o.iss&&o.exp&&o.iat){let e=Math.floor((new Date).getTime()/1e3);"string"==typeof r.kid&&"string"==typeof r.alg&&"string"==typeof o.sub&&o.sub.length>0&&"string"==typeof o.iss&&"number"==typeof o.exp&&o.exp>e&&"number"==typeof o.iat?t.callback(1):t.callback(5)}else t.callback(4)}else t.callback(3)};const n=t.getCreds(),o=t.getOauthToken(),i=t.getEndpoint();if(o)r(o);else{let o=new XMLHttpRequest;o.open("POST",i+"/oauth/token",!0),o.setRequestHeader("Authorization","Basic "+n),o.setRequestHeader("Content-type","application/json");let a={grant_type:"client_credentials"};o.responseType="text",o.send(JSON.stringify(a)),o.onreadystatechange=function(){if(4===o.readyState)if(200===o.status||204===o.status){let n=e(o.responseText);n&&n.hasOwnProperty("access_token")?r(n.access_token):t.callback(2)}else t.callback(o.status)}}}};function Ge(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?pe.get(r)():pe.get(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(o)}}function ze(e){return D("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function Ye(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t=ze(e);return e===t?e:t+" ["+e+"]"}))}function Be(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function Ve(){var e=Be();return o.extraStackTrace&&(e+="\n"+o.extraStackTrace()),Ye(e)}function Ze(e){return Tr(e+16)+16}function qe(e){this.excPtr=e,this.ptr=e-16,this.set_type=function(e){Z[this.ptr+4>>2]=e},this.get_type=function(){return Z[this.ptr+4>>2]},this.set_destructor=function(e){Z[this.ptr+8>>2]=e},this.get_destructor=function(){return Z[this.ptr+8>>2]},this.set_refcount=function(e){Z[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,z[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=z[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,z[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=z[this.ptr+13>>0]},this.init=function(e,t){this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=Z[this.ptr>>2];Z[this.ptr>>2]=e+1},this.release_ref=function(){var e=Z[this.ptr>>2];return Z[this.ptr>>2]=e-1,x(e>0),1===e}}function Ke(e){this.free=function(){Mr(this.ptr),this.ptr=0},this.set_base_ptr=function(e){Z[this.ptr>>2]=e},this.get_base_ptr=function(){return Z[this.ptr>>2]},this.set_adjusted_ptr=function(e){Z[this.ptr+4>>2]=e},this.get_adjusted_ptr_addr=function(){return this.ptr+4},this.get_adjusted_ptr=function(){return Z[this.ptr+4>>2]},this.get_exception_ptr=function(){if(Sr(this.get_exception_info().get_type()))return Z[this.get_base_ptr()>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.get_base_ptr()},this.get_exception_info=function(){return new qe(this.get_base_ptr())},void 0===e?(this.ptr=Tr(8),this.set_adjusted_ptr(0)):this.ptr=e}var Je=[];function $e(e){e.add_ref()}function et(e){var t=new Ke(e),r=t.get_exception_info();return r.get_caught()||(r.set_caught(!0)),r.set_rethrown(!1),Je.push(t),$e(r),t.get_exception_ptr()}var tt=0;function rt(e){try{return Mr(new qe(e).ptr)}catch(e){h("exception during cxa_free_exception: "+e)}}function nt(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&pe.get(t)(e.excPtr),rt(e.excPtr)}}function ot(){Rr(0),x(Je.length>0);var e=Je.pop();nt(e.get_exception_info()),e.free(),tt=0}function it(e){var t=new Ke(e),r=t.get_base_ptr();throw tt||(tt=r),t.free(),r}function at(){var e=tt;if(!e)return F(0),0;var t=new qe(e),r=t.get_type(),n=new Ke;if(n.set_base_ptr(e),n.set_adjusted_ptr(e),!r)return F(0),0|n.ptr;for(var o=Array.prototype.slice.call(arguments),i=0;i=gt&&t<=Tt?"_"+e:e}function Dt(e,t){return e=ht(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function wt(e,t){var r=Dt(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var yt=void 0;function bt(e){throw new yt(e)}var Pt=void 0;function Rt(e){throw new Pt(e)}function Mt(e,t,r){function n(t){var n=r(t);n.length!==e.length&&Rt("Mismatched type converter count");for(var o=0;o>i])},destructorFunction:null})}var At=[],Ft=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function It(e){e>4&&0==--Ft[e].refcount&&(Ft[e]=void 0,At.push(e))}function vt(){for(var e=0,t=5;t>2])}function Ht(e,t){mt(e,{name:t=Et(t),fromWireType:function(e){var t=Ft[e].value;return It(e),t},toWireType:function(e,t){return xt(t)},argPackAdvance:8,readValueFromPointer:Nt,destructorFunction:null})}function kt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Xt(e,t){switch(t){case 2:return function(e){return this.fromWireType(K[e>>2])};case 3:return function(e){return this.fromWireType(J[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Qt(e,t,r){var n=pt(r);mt(e,{name:t=Et(t),fromWireType:function(e){return e},toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+kt(t)+'" to '+this.name);return t},argPackAdvance:8,readValueFromPointer:Xt(t,n),destructorFunction:null})}function Ct(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=Dt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var n=new r,o=e.apply(n,t);return o instanceof Object?o:n}function Lt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Wt(e,t,r,n,o){var i=t.length;i<2&&bt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,s=!1,c=1;c0?", ":"")+u),l+=(d?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",s)l+="runDestructors(destructors);\n";else for(c=a?1:2;c>2)+n]);return r}function Bt(e,t,r){o.hasOwnProperty(e)||Rt("Replacing nonexistant public symbol"),void 0!==o[e].overloadTable&&void 0!==r?o[e].overloadTable[r]=t:(o[e]=t,o[e].argCount=r)}function Vt(e,t,r){x("dynCall_"+e in o,"bad function pointer type - no table for sig '"+e+"'"),r&&r.length?x(r.length===e.substring(1).replace(/j/g,"--").length):x(1==e.length);var n=o["dynCall_"+e];return r&&r.length?n.apply(null,[t].concat(r)):n.call(null,t)}function Zt(e,t,r){return e.includes("j")?Vt(e,t,r):(x(pe.get(t),"missing table entry in dynCall: "+t),pe.get(t).apply(null,r))}function qt(e,t){x(e.includes("j"),"getDynCaller should only be called with i64 sigs");var r=[];return function(){r.length=arguments.length;for(var n=0;n>1]}:function(e){return V[e>>1]};case 2:return r?function(e){return Z[e>>2]}:function(e){return q[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function nr(e,t,r,n,o){t=Et(t),-1===o&&(o=4294967295);var i=pt(r),a=function(e){return e};if(0===n){var s=32-8*r;a=function(e){return e<>>s}}var c=t.includes("unsigned");mt(e,{name:t,fromWireType:a,toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+kt(r)+'" to '+this.name);if(ro)throw new TypeError('Passing a number "'+kt(r)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+n+", "+o+"]!");return c?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:rr(t,i,0!==n),destructorFunction:null})}function or(e,t,r){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function o(e){var t=q,r=t[e>>=2],o=t[e+1];return new n(G,o,r)}mt(e,{name:r=Et(r),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})}function ir(e,t){var r="std::string"===(t=Et(t));mt(e,{name:t,fromWireType:function(e){var t,n=q[e>>2];if(r)for(var o=e+4,i=0;i<=n;++i){var a=e+4+i;if(i==n||0==Y[a]){var s=Q(o,a-o);void 0===t?t=s:(t+=String.fromCharCode(0),t+=s),o=a+1}}else{var c=new Array(n);for(i=0;i>2]=o,r&&n)L(t,i+4,o+1);else if(n)for(var a=0;a255&&(Mr(i),bt("String has UTF-16 code units that do not fit in 8 bits")),Y[i+4+a]=s}else for(a=0;a>2],a=i(),c=e+4,d=0;d<=o;++d){var p=e+4+d*t;if(d==o||0==a[p>>s]){var u=n(c,p-c);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),c=p+t}}return Mr(e),r},toWireType:function(e,n){"string"!=typeof n&&bt("Cannot pass non-string to C++ string type "+r);var i=a(n),c=Tr(4+i+t);return q[c>>2]=i>>s,o(n,c+4,i+t),null!==e&&e.push(Mr,c),c},argPackAdvance:8,readValueFromPointer:Nt,destructorFunction:function(e){Mr(e)}})}function sr(e,t){mt(e,{isVoid:!0,name:t=Et(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})}function cr(){je()}var dr=[];function pr(e,t){var r;for(x(Array.isArray(dr)),x(t%16==0),dr.length=0,t>>=2;r=Y[e++];){x(100===r||102===r||105===r);var n=r<105;n&&1&t&&t++,dr.push(n?J[t++>>1]:Z[t]),++t}return dr}function ur(e,t,r){var n=pr(t,r);return We.hasOwnProperty(e)||je("No EM_ASM constant found at address "+e),We[e].apply(null,n)}function lr(e,t,r){Y.copyWithin(e,t,t+r)}function Er(e){try{return v.grow(e-G.byteLength+65535>>>16),ce(v.buffer),1}catch(t){h("emscripten_realloc_buffer: Attempted to grow heap from "+G.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}function Or(e){var t=Y.length;x((e>>>=0)>t);var r=2147483648;if(e>r)return h("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var n=1;n<=4;n*=2){var o=t*(1+.2/n);o=Math.min(o,e+100663296);var i=Math.min(r,se(Math.max(e,o),65536));if(Er(i))return!0}return h("Failed to grow the heap from "+t+" bytes to "+i+" bytes, not enough memory!"),!1}function fr(){return I()}ut(),yt=o.BindingError=wt(Error,"BindingError"),Pt=o.InternalError=wt(Error,"InternalError"),Ut(),Jt=o.UnboundTypeError=wt(Error,"UnboundTypeError");var _r,gr={__cxa_allocate_exception:Ze,__cxa_begin_catch:et,__cxa_end_catch:ot,__cxa_find_matching_catch_2:at,__cxa_find_matching_catch_3:st,__cxa_free_exception:rt,__cxa_throw:ct,__resumeException:it,_embind_register_bigint:dt,_embind_register_bool:St,_embind_register_emval:Ht,_embind_register_float:Qt,_embind_register_function:tr,_embind_register_integer:nr,_embind_register_memory_view:or,_embind_register_std_string:ir,_embind_register_std_wstring:ar,_embind_register_void:sr,abort:cr,emscripten_asm_const_int:ur,emscripten_memcpy_big:lr,emscripten_resize_heap:Or,getTempRet0:fr,invoke_ii:Ar,invoke_iii:Fr,invoke_v:jr,invoke_vii:Ir,invoke_viii:vr},Tr=(Le(),o.___wasm_call_ctors=Xe("__wasm_call_ctors"),o._getCreds=Xe("getCreds"),o._getOauthToken=Xe("getOauthToken"),o._getEndpoint=Xe("getEndpoint"),o._callback=Xe("callback"),o._initialize_internal=Xe("initialize_internal"),o._initialize=Xe("initialize"),o._initializeWithToken=Xe("initializeWithToken"),o._malloc=Xe("malloc")),hr=o.___getTypeName=Xe("__getTypeName"),Dr=(o.___embind_register_native_and_builtin_types=Xe("__embind_register_native_and_builtin_types"),o.___errno_location=Xe("__errno_location"),o._fflush=Xe("fflush"),o.stackSave=Xe("stackSave")),wr=o.stackRestore=Xe("stackRestore"),yr=o.stackAlloc=Xe("stackAlloc"),br=o._emscripten_stack_init=function(){return(br=o._emscripten_stack_init=o.asm.emscripten_stack_init).apply(null,arguments)},Pr=(o._emscripten_stack_get_free=function(){return(o._emscripten_stack_get_free=o.asm.emscripten_stack_get_free).apply(null,arguments)},o._emscripten_stack_get_end=function(){return(Pr=o._emscripten_stack_get_end=o.asm.emscripten_stack_get_end).apply(null,arguments)}),Rr=o._setThrew=Xe("setThrew"),Mr=o._free=Xe("free"),mr=o.___cxa_can_catch=Xe("__cxa_can_catch"),Sr=o.___cxa_is_pointer_type=Xe("__cxa_is_pointer_type");function Ar(e,t){var r=Dr();try{return pe.get(e)(t)}catch(e){if(wr(r),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Fr(e,t,r){var n=Dr();try{return pe.get(e)(t,r)}catch(e){if(wr(n),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Ir(e,t,r){var n=Dr();try{pe.get(e)(t,r)}catch(e){if(wr(n),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function vr(e,t,r,n){var o=Dr();try{pe.get(e)(t,r,n)}catch(e){if(wr(o),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function jr(e){var t=Dr();try{pe.get(e)()}catch(e){if(wr(t),e!==e+0&&"longjmp"!==e)throw e;Rr(1,0)}}function Ur(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Object.getOwnPropertyDescriptor(o,"intArrayFromString")||(o.intArrayFromString=function(){je("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"intArrayToString")||(o.intArrayToString=function(){je("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.ccall=H,Object.getOwnPropertyDescriptor(o,"cwrap")||(o.cwrap=function(){je("'cwrap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setValue")||(o.setValue=function(){je("'setValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getValue")||(o.getValue=function(){je("'getValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocate")||(o.allocate=function(){je("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF8ArrayToString")||(o.UTF8ArrayToString=function(){je("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF8ToString")||(o.UTF8ToString=function(){je("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF8Array")||(o.stringToUTF8Array=function(){je("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF8")||(o.stringToUTF8=function(){je("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF8")||(o.lengthBytesUTF8=function(){je("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackTrace")||(o.stackTrace=function(){je("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPreRun")||(o.addOnPreRun=function(){je("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnInit")||(o.addOnInit=function(){je("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPreMain")||(o.addOnPreMain=function(){je("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnExit")||(o.addOnExit=function(){je("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addOnPostRun")||(o.addOnPostRun=function(){je("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeStringToMemory")||(o.writeStringToMemory=function(){je("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeArrayToMemory")||(o.writeArrayToMemory=function(){je("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeAsciiToMemory")||(o.writeAsciiToMemory=function(){je("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"addRunDependency")||(o.addRunDependency=function(){je("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"removeRunDependency")||(o.removeRunDependency=function(){je("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createFolder")||(o.FS_createFolder=function(){je("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS_createPath")||(o.FS_createPath=function(){je("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createDataFile")||(o.FS_createDataFile=function(){je("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createPreloadedFile")||(o.FS_createPreloadedFile=function(){je("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createLazyFile")||(o.FS_createLazyFile=function(){je("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_createLink")||(o.FS_createLink=function(){je("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS_createDevice")||(o.FS_createDevice=function(){je("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"FS_unlink")||(o.FS_unlink=function(){je("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(o,"getLEB")||(o.getLEB=function(){je("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getFunctionTables")||(o.getFunctionTables=function(){je("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"alignFunctionTables")||(o.alignFunctionTables=function(){je("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFunctions")||(o.registerFunctions=function(){je("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.addFunction=m,o.removeFunction=M,Object.getOwnPropertyDescriptor(o,"getFuncWrapper")||(o.getFuncWrapper=function(){je("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"prettyPrint")||(o.prettyPrint=function(){je("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCall")||(o.dynCall=function(){je("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getCompilerSetting")||(o.getCompilerSetting=function(){je("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"print")||(o.print=function(){je("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"printErr")||(o.printErr=function(){je("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getTempRet0")||(o.getTempRet0=function(){je("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setTempRet0")||(o.setTempRet0=function(){je("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callMain")||(o.callMain=function(){je("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"abort")||(o.abort=function(){je("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"keepRuntimeAlive")||(o.keepRuntimeAlive=function(){je("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"zeroMemory")||(o.zeroMemory=function(){je("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToNewUTF8")||(o.stringToNewUTF8=function(){je("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setFileTime")||(o.setFileTime=function(){je("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscripten_realloc_buffer")||(o.emscripten_realloc_buffer=function(){je("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ENV")||(o.ENV=function(){je("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ERRNO_CODES")||(o.ERRNO_CODES=function(){je("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ERRNO_MESSAGES")||(o.ERRNO_MESSAGES=function(){je("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setErrNo")||(o.setErrNo=function(){je("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetPton4")||(o.inetPton4=function(){je("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetNtop4")||(o.inetNtop4=function(){je("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetPton6")||(o.inetPton6=function(){je("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"inetNtop6")||(o.inetNtop6=function(){je("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readSockaddr")||(o.readSockaddr=function(){je("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeSockaddr")||(o.writeSockaddr=function(){je("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"DNS")||(o.DNS=function(){je("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getHostByName")||(o.getHostByName=function(){je("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GAI_ERRNO_MESSAGES")||(o.GAI_ERRNO_MESSAGES=function(){je("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Protocols")||(o.Protocols=function(){je("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Sockets")||(o.Sockets=function(){je("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getRandomDevice")||(o.getRandomDevice=function(){je("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"traverseStack")||(o.traverseStack=function(){je("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UNWIND_CACHE")||(o.UNWIND_CACHE=function(){je("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"withBuiltinMalloc")||(o.withBuiltinMalloc=function(){je("'withBuiltinMalloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readAsmConstArgsArray")||(o.readAsmConstArgsArray=function(){je("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readAsmConstArgs")||(o.readAsmConstArgs=function(){je("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"mainThreadEM_ASM")||(o.mainThreadEM_ASM=function(){je("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jstoi_q")||(o.jstoi_q=function(){je("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jstoi_s")||(o.jstoi_s=function(){je("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getExecutableName")||(o.getExecutableName=function(){je("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"listenOnce")||(o.listenOnce=function(){je("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"autoResumeAudioContext")||(o.autoResumeAudioContext=function(){je("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCallLegacy")||(o.dynCallLegacy=function(){je("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getDynCaller")||(o.getDynCaller=function(){je("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"dynCall")||(o.dynCall=function(){je("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callRuntimeCallbacks")||(o.callRuntimeCallbacks=function(){je("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"handleException")||(o.handleException=function(){je("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runtimeKeepalivePush")||(o.runtimeKeepalivePush=function(){je("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runtimeKeepalivePop")||(o.runtimeKeepalivePop=function(){je("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"callUserCallback")||(o.callUserCallback=function(){je("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"maybeExit")||(o.maybeExit=function(){je("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"safeSetTimeout")||(o.safeSetTimeout=function(){je("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"asmjsMangle")||(o.asmjsMangle=function(){je("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"asyncLoad")||(o.asyncLoad=function(){je("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"alignMemory")||(o.alignMemory=function(){je("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"mmapAlloc")||(o.mmapAlloc=function(){je("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"reallyNegative")||(o.reallyNegative=function(){je("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"unSign")||(o.unSign=function(){je("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"reSign")||(o.reSign=function(){je("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"formatString")||(o.formatString=function(){je("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PATH")||(o.PATH=function(){je("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PATH_FS")||(o.PATH_FS=function(){je("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SYSCALLS")||(o.SYSCALLS=function(){je("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"syscallMmap2")||(o.syscallMmap2=function(){je("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"syscallMunmap")||(o.syscallMunmap=function(){je("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getSocketFromFD")||(o.getSocketFromFD=function(){je("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getSocketAddress")||(o.getSocketAddress=function(){je("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"JSEvents")||(o.JSEvents=function(){je("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerKeyEventCallback")||(o.registerKeyEventCallback=function(){je("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"specialHTMLTargets")||(o.specialHTMLTargets=function(){je("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"maybeCStringToJsString")||(o.maybeCStringToJsString=function(){je("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"findEventTarget")||(o.findEventTarget=function(){je("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"findCanvasEventTarget")||(o.findCanvasEventTarget=function(){je("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getBoundingClientRect")||(o.getBoundingClientRect=function(){je("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillMouseEventData")||(o.fillMouseEventData=function(){je("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerMouseEventCallback")||(o.registerMouseEventCallback=function(){je("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerWheelEventCallback")||(o.registerWheelEventCallback=function(){je("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerUiEventCallback")||(o.registerUiEventCallback=function(){je("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFocusEventCallback")||(o.registerFocusEventCallback=function(){je("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillDeviceOrientationEventData")||(o.fillDeviceOrientationEventData=function(){je("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerDeviceOrientationEventCallback")||(o.registerDeviceOrientationEventCallback=function(){je("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillDeviceMotionEventData")||(o.fillDeviceMotionEventData=function(){je("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerDeviceMotionEventCallback")||(o.registerDeviceMotionEventCallback=function(){je("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"screenOrientation")||(o.screenOrientation=function(){je("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillOrientationChangeEventData")||(o.fillOrientationChangeEventData=function(){je("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerOrientationChangeEventCallback")||(o.registerOrientationChangeEventCallback=function(){je("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillFullscreenChangeEventData")||(o.fillFullscreenChangeEventData=function(){je("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerFullscreenChangeEventCallback")||(o.registerFullscreenChangeEventCallback=function(){je("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerRestoreOldStyle")||(o.registerRestoreOldStyle=function(){je("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"hideEverythingExceptGivenElement")||(o.hideEverythingExceptGivenElement=function(){je("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"restoreHiddenElements")||(o.restoreHiddenElements=function(){je("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setLetterbox")||(o.setLetterbox=function(){je("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"currentFullscreenStrategy")||(o.currentFullscreenStrategy=function(){je("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"restoreOldWindowedStyle")||(o.restoreOldWindowedStyle=function(){je("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"softFullscreenResizeWebGLRenderTarget")||(o.softFullscreenResizeWebGLRenderTarget=function(){je("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"doRequestFullscreen")||(o.doRequestFullscreen=function(){je("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillPointerlockChangeEventData")||(o.fillPointerlockChangeEventData=function(){je("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerPointerlockChangeEventCallback")||(o.registerPointerlockChangeEventCallback=function(){je("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerPointerlockErrorEventCallback")||(o.registerPointerlockErrorEventCallback=function(){je("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requestPointerLock")||(o.requestPointerLock=function(){je("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillVisibilityChangeEventData")||(o.fillVisibilityChangeEventData=function(){je("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerVisibilityChangeEventCallback")||(o.registerVisibilityChangeEventCallback=function(){je("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerTouchEventCallback")||(o.registerTouchEventCallback=function(){je("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillGamepadEventData")||(o.fillGamepadEventData=function(){je("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerGamepadEventCallback")||(o.registerGamepadEventCallback=function(){je("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerBeforeUnloadEventCallback")||(o.registerBeforeUnloadEventCallback=function(){je("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"fillBatteryEventData")||(o.fillBatteryEventData=function(){je("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"battery")||(o.battery=function(){je("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerBatteryEventCallback")||(o.registerBatteryEventCallback=function(){je("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setCanvasElementSize")||(o.setCanvasElementSize=function(){je("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getCanvasElementSize")||(o.getCanvasElementSize=function(){je("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"polyfillSetImmediate")||(o.polyfillSetImmediate=function(){je("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"demangle")||(o.demangle=function(){je("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"demangleAll")||(o.demangleAll=function(){je("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"jsStackTrace")||(o.jsStackTrace=function(){je("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackTrace")||(o.stackTrace=function(){je("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getEnvStrings")||(o.getEnvStrings=function(){je("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"checkWasiClock")||(o.checkWasiClock=function(){je("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"flush_NO_FILESYSTEM")||(o.flush_NO_FILESYSTEM=function(){je("'flush_NO_FILESYSTEM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64")||(o.writeI53ToI64=function(){je("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64Clamped")||(o.writeI53ToI64Clamped=function(){je("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToI64Signaling")||(o.writeI53ToI64Signaling=function(){je("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToU64Clamped")||(o.writeI53ToU64Clamped=function(){je("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeI53ToU64Signaling")||(o.writeI53ToU64Signaling=function(){je("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readI53FromI64")||(o.readI53FromI64=function(){je("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readI53FromU64")||(o.readI53FromU64=function(){je("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"convertI32PairToI53")||(o.convertI32PairToI53=function(){je("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"convertU32PairToI53")||(o.convertU32PairToI53=function(){je("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"uncaughtExceptionCount")||(o.uncaughtExceptionCount=function(){je("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exceptionLast")||(o.exceptionLast=function(){je("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exceptionCaught")||(o.exceptionCaught=function(){je("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ExceptionInfo")||(o.ExceptionInfo=function(){je("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"CatchInfo")||(o.CatchInfo=function(){je("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exception_addRef")||(o.exception_addRef=function(){je("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exception_decRef")||(o.exception_decRef=function(){je("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"Browser")||(o.Browser=function(){je("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"funcWrappers")||(o.funcWrappers=function(){je("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getFuncWrapper")||(o.getFuncWrapper=function(){je("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setMainLoop")||(o.setMainLoop=function(){je("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"wget")||(o.wget=function(){je("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"FS")||(o.FS=function(){je("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"MEMFS")||(o.MEMFS=function(){je("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"TTY")||(o.TTY=function(){je("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PIPEFS")||(o.PIPEFS=function(){je("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SOCKFS")||(o.SOCKFS=function(){je("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"_setNetworkCallback")||(o._setNetworkCallback=function(){je("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"tempFixedLengthArray")||(o.tempFixedLengthArray=function(){je("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"miniTempWebGLFloatBuffers")||(o.miniTempWebGLFloatBuffers=function(){je("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heapObjectForWebGLType")||(o.heapObjectForWebGLType=function(){je("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heapAccessShiftForWebGLHeap")||(o.heapAccessShiftForWebGLHeap=function(){je("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GL")||(o.GL=function(){je("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGet")||(o.emscriptenWebGLGet=function(){je("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"computeUnpackAlignedImageSize")||(o.computeUnpackAlignedImageSize=function(){je("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetTexPixelData")||(o.emscriptenWebGLGetTexPixelData=function(){je("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetUniform")||(o.emscriptenWebGLGetUniform=function(){je("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglGetUniformLocation")||(o.webglGetUniformLocation=function(){je("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglPrepareUniformLocationsBeforeFirstUse")||(o.webglPrepareUniformLocationsBeforeFirstUse=function(){je("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"webglGetLeftBracePos")||(o.webglGetLeftBracePos=function(){je("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emscriptenWebGLGetVertexAttrib")||(o.emscriptenWebGLGetVertexAttrib=function(){je("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"writeGLArray")||(o.writeGLArray=function(){je("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"AL")||(o.AL=function(){je("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_unicode")||(o.SDL_unicode=function(){je("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_ttfContext")||(o.SDL_ttfContext=function(){je("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_audio")||(o.SDL_audio=function(){je("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL")||(o.SDL=function(){je("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"SDL_gfx")||(o.SDL_gfx=function(){je("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLUT")||(o.GLUT=function(){je("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"EGL")||(o.EGL=function(){je("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLFW_Window")||(o.GLFW_Window=function(){je("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLFW")||(o.GLFW=function(){je("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"GLEW")||(o.GLEW=function(){je("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"IDBStore")||(o.IDBStore=function(){je("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runAndAbortIfError")||(o.runAndAbortIfError=function(){je("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_handle_array")||(o.emval_handle_array=function(){je("'emval_handle_array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_free_list")||(o.emval_free_list=function(){je("'emval_free_list' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_symbols")||(o.emval_symbols=function(){je("'emval_symbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_emval")||(o.init_emval=function(){je("'init_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"count_emval_handles")||(o.count_emval_handles=function(){je("'count_emval_handles' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"get_first_emval")||(o.get_first_emval=function(){je("'get_first_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getStringOrSymbol")||(o.getStringOrSymbol=function(){je("'getStringOrSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requireHandle")||(o.requireHandle=function(){je("'requireHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_newers")||(o.emval_newers=function(){je("'emval_newers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"craftEmvalAllocator")||(o.craftEmvalAllocator=function(){je("'craftEmvalAllocator' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_get_global")||(o.emval_get_global=function(){je("'emval_get_global' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"emval_methodCallers")||(o.emval_methodCallers=function(){je("'emval_methodCallers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"InternalError")||(o.InternalError=function(){je("'InternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"BindingError")||(o.BindingError=function(){je("'BindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UnboundTypeError")||(o.UnboundTypeError=function(){je("'UnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"PureVirtualError")||(o.PureVirtualError=function(){je("'PureVirtualError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_embind")||(o.init_embind=function(){je("'init_embind' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwInternalError")||(o.throwInternalError=function(){je("'throwInternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwBindingError")||(o.throwBindingError=function(){je("'throwBindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwUnboundTypeError")||(o.throwUnboundTypeError=function(){je("'throwUnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ensureOverloadTable")||(o.ensureOverloadTable=function(){je("'ensureOverloadTable' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"exposePublicSymbol")||(o.exposePublicSymbol=function(){je("'exposePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"replacePublicSymbol")||(o.replacePublicSymbol=function(){je("'replacePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"extendError")||(o.extendError=function(){je("'extendError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"createNamedFunction")||(o.createNamedFunction=function(){je("'createNamedFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredInstances")||(o.registeredInstances=function(){je("'registeredInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getBasestPointer")||(o.getBasestPointer=function(){je("'getBasestPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerInheritedInstance")||(o.registerInheritedInstance=function(){je("'registerInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"unregisterInheritedInstance")||(o.unregisterInheritedInstance=function(){je("'unregisterInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getInheritedInstance")||(o.getInheritedInstance=function(){je("'getInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getInheritedInstanceCount")||(o.getInheritedInstanceCount=function(){je("'getInheritedInstanceCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getLiveInheritedInstances")||(o.getLiveInheritedInstances=function(){je("'getLiveInheritedInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredTypes")||(o.registeredTypes=function(){je("'registeredTypes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"awaitingDependencies")||(o.awaitingDependencies=function(){je("'awaitingDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"typeDependencies")||(o.typeDependencies=function(){je("'typeDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registeredPointers")||(o.registeredPointers=function(){je("'registeredPointers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"registerType")||(o.registerType=function(){je("'registerType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"whenDependentTypesAreResolved")||(o.whenDependentTypesAreResolved=function(){je("'whenDependentTypesAreResolved' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind_charCodes")||(o.embind_charCodes=function(){je("'embind_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind_init_charCodes")||(o.embind_init_charCodes=function(){je("'embind_init_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"readLatin1String")||(o.readLatin1String=function(){je("'readLatin1String' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getTypeName")||(o.getTypeName=function(){je("'getTypeName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"heap32VectorToArray")||(o.heap32VectorToArray=function(){je("'heap32VectorToArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"requireRegisteredType")||(o.requireRegisteredType=function(){je("'requireRegisteredType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"getShiftFromSize")||(o.getShiftFromSize=function(){je("'getShiftFromSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"integerReadValueFromPointer")||(o.integerReadValueFromPointer=function(){je("'integerReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"enumReadValueFromPointer")||(o.enumReadValueFromPointer=function(){je("'enumReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"floatReadValueFromPointer")||(o.floatReadValueFromPointer=function(){je("'floatReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"simpleReadValueFromPointer")||(o.simpleReadValueFromPointer=function(){je("'simpleReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runDestructors")||(o.runDestructors=function(){je("'runDestructors' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"new_")||(o.new_=function(){je("'new_' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"craftInvokerFunction")||(o.craftInvokerFunction=function(){je("'craftInvokerFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"embind__requireFunction")||(o.embind__requireFunction=function(){je("'embind__requireFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"tupleRegistrations")||(o.tupleRegistrations=function(){je("'tupleRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"structRegistrations")||(o.structRegistrations=function(){je("'structRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"genericPointerToWireType")||(o.genericPointerToWireType=function(){je("'genericPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"constNoSmartPtrRawPointerToWireType")||(o.constNoSmartPtrRawPointerToWireType=function(){je("'constNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"nonConstNoSmartPtrRawPointerToWireType")||(o.nonConstNoSmartPtrRawPointerToWireType=function(){je("'nonConstNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_RegisteredPointer")||(o.init_RegisteredPointer=function(){je("'init_RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer")||(o.RegisteredPointer=function(){je("'RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_getPointee")||(o.RegisteredPointer_getPointee=function(){je("'RegisteredPointer_getPointee' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_destructor")||(o.RegisteredPointer_destructor=function(){je("'RegisteredPointer_destructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_deleteObject")||(o.RegisteredPointer_deleteObject=function(){je("'RegisteredPointer_deleteObject' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredPointer_fromWireType")||(o.RegisteredPointer_fromWireType=function(){je("'RegisteredPointer_fromWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"runDestructor")||(o.runDestructor=function(){je("'runDestructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"releaseClassHandle")||(o.releaseClassHandle=function(){je("'releaseClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"finalizationGroup")||(o.finalizationGroup=function(){je("'finalizationGroup' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"detachFinalizer_deps")||(o.detachFinalizer_deps=function(){je("'detachFinalizer_deps' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"detachFinalizer")||(o.detachFinalizer=function(){je("'detachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"attachFinalizer")||(o.attachFinalizer=function(){je("'attachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"makeClassHandle")||(o.makeClassHandle=function(){je("'makeClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"init_ClassHandle")||(o.init_ClassHandle=function(){je("'init_ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle")||(o.ClassHandle=function(){je("'ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_isAliasOf")||(o.ClassHandle_isAliasOf=function(){je("'ClassHandle_isAliasOf' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"throwInstanceAlreadyDeleted")||(o.throwInstanceAlreadyDeleted=function(){je("'throwInstanceAlreadyDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_clone")||(o.ClassHandle_clone=function(){je("'ClassHandle_clone' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_delete")||(o.ClassHandle_delete=function(){je("'ClassHandle_delete' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"deletionQueue")||(o.deletionQueue=function(){je("'deletionQueue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_isDeleted")||(o.ClassHandle_isDeleted=function(){je("'ClassHandle_isDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"ClassHandle_deleteLater")||(o.ClassHandle_deleteLater=function(){je("'ClassHandle_deleteLater' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"flushPendingDeletes")||(o.flushPendingDeletes=function(){je("'flushPendingDeletes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"delayFunction")||(o.delayFunction=function(){je("'delayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"setDelayFunction")||(o.setDelayFunction=function(){je("'setDelayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"RegisteredClass")||(o.RegisteredClass=function(){je("'RegisteredClass' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"shallowCopyInternalPointer")||(o.shallowCopyInternalPointer=function(){je("'shallowCopyInternalPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"downcastPointer")||(o.downcastPointer=function(){je("'downcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"upcastPointer")||(o.upcastPointer=function(){je("'upcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"validateThis")||(o.validateThis=function(){je("'validateThis' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"char_0")||(o.char_0=function(){je("'char_0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"char_9")||(o.char_9=function(){je("'char_9' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"makeLegalFunctionName")||(o.makeLegalFunctionName=function(){je("'makeLegalFunctionName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"warnOnce")||(o.warnOnce=function(){je("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackSave")||(o.stackSave=function(){je("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackRestore")||(o.stackRestore=function(){je("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stackAlloc")||(o.stackAlloc=function(){je("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"AsciiToString")||(o.AsciiToString=function(){je("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToAscii")||(o.stringToAscii=function(){je("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF16ToString")||(o.UTF16ToString=function(){je("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF16")||(o.stringToUTF16=function(){je("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF16")||(o.lengthBytesUTF16=function(){je("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"UTF32ToString")||(o.UTF32ToString=function(){je("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"stringToUTF32")||(o.stringToUTF32=function(){je("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"lengthBytesUTF32")||(o.lengthBytesUTF32=function(){je("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocateUTF8")||(o.allocateUTF8=function(){je("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(o,"allocateUTF8OnStack")||(o.allocateUTF8OnStack=function(){je("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),o.writeStackCookie=le,o.checkStackCookie=Ee,Object.getOwnPropertyDescriptor(o,"ALLOC_NORMAL")||Object.defineProperty(o,"ALLOC_NORMAL",{configurable:!0,get:function(){je("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(o,"ALLOC_STACK")||Object.defineProperty(o,"ALLOC_STACK",{configurable:!0,get:function(){je("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}});function xr(){br(),le()}function Nr(e){function t(){_r||(_r=!0,o.calledRun=!0,U||(ye(),r(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),x(!o._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),be()))}e=e||s,me>0||(xr(),we(),me>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t(),Ee()))}if(Ae=function e(){_r||Nr(),_r||(Ae=e)},o.run=Nr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Nr(),t.ready}}();"object"==typeof exports&&"object"==typeof module?module.exports=AcuantInitializerModule:"function"==typeof define&&define.amd?define([],(function(){return AcuantInitializerModule})):"object"==typeof exports&&(exports.AcuantInitializerModule=AcuantInitializerModule); \ No newline at end of file diff --git a/public/acuant/11.9.3.508/AcuantInitializerService.wasm b/public/acuant/11.9.3.508/AcuantInitializerService.wasm new file mode 100644 index 00000000000..a11449fafd8 Binary files /dev/null and b/public/acuant/11.9.3.508/AcuantInitializerService.wasm differ diff --git a/public/acuant/11.9.3.508/AcuantInitializerWorker.min.js b/public/acuant/11.9.3.508/AcuantInitializerWorker.min.js new file mode 100644 index 00000000000..dd7f1fd9278 --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantInitializerWorker.min.js @@ -0,0 +1 @@ +"use strict";importScripts("AcuantInitializerService.min.js"),AcuantInitializerModule().then((i=>{let e=i.addFunction(n,"vi");function n(i){postMessage({func:"initialize",status:i})}onmessage=t=>{if(t&&t.data)if("initialize"===t.data.func){let a=t.data.data;a.creds&&a.endpoint?i.ccall("initialize",null,["string","string","number"],[a.creds,a.endpoint,e]):(console.error("missing params"),n(6))}else if("initializeWithToken"===t.data.func){let a=t.data.data;a.token&&a.endpoint?i.ccall("initializeWithToken",null,["string","string","number"],[a.token,a.endpoint,e]):(console.error("missing params"),n(6))}else console.error("called with no func specified"),n(7)},postMessage({initializerWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.3.508/AcuantJavascriptWebSdk.min.js b/public/acuant/11.9.3.508/AcuantJavascriptWebSdk.min.js new file mode 100644 index 00000000000..59d36e77e39 --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantJavascriptWebSdk.min.js @@ -0,0 +1 @@ +var AcuantConfig=function(){"use strict";return{acuantVersion:"11.9.3"}}();let config={};"undefined"!=typeof acuantConfig&&0!==Object.keys(acuantConfig).length&&acuantConfig.constructor===Object&&(config=acuantConfig),document.addEventListener("DOMContentLoaded",(function(){void 0===AcuantJavascriptWebSdk&&loadAcuantSdk(),document.removeEventListener("DOMContentLoaded",this)}));var AcuantJavascriptWebSdk=void 0;function loadAcuantSdk(){AcuantJavascriptWebSdk=function(e){let t={ACUANT_IMAGE_WORKER:"AcuantImageWorker",ACUANT_METRICS_WORKER:"AcuantMetricsWorker",SEQUENCE_BREAK_CODE:"sequence-break",START_FAIL_CODE:"start-fail",REPEAT_FAIL_CODE:"repeat-fail",HEIC_NOT_SUPPORTED_CODE:"heic-not-supported",BARCODE_READER_ID:"acuant-barcode-reader",singleWorkerModel:!1,startInitializer:function(n,a=0){if(!n)return void M("startInitializer did not have a user callback set");if(y)return;L=1==a,T(i,n);let r=null;e&&e.cdnPath&&e.cdnPath.initializerUrl?r=e.cdnPath.initializerUrl:e.path&&(r=e.path),y=new Worker(O(r,"AcuantInitializerWorker.min.js",a)),y.onmessage=w,function(){if(document.getElementById(t.BARCODE_READER_ID))return;const e=document.createElement("div");e.id=t.BARCODE_READER_ID,e.style.display="none",document.body.appendChild(e)}()},endInitializer:function(){y&&(y.terminate(),y.onmessage=null,g=!1,y=null)},startImageWorker:function(e){e?S?e():(T(a,e),I(L?1:0)):M("startImageWorker did not have a user callback set")},startMetricsWorker:function(e){e?R?e():(T(r,e),b(L?1:0)):M("startMetricsWorker did not have a user callback set")},endImageWorker:function(){S.terminate(),S.onmessage=null,P=!1,S=null},endMetricsWorker:function(){R.terminate(),R.onmessage=null,C=!1,R=null},start:function(e,t=!1){if(!e)return void M("start did not have a user callback set");const i=L?1:0;this.singleWorkerModel=t,T(n,e),this.singleWorkerModel?S||I(i):(S||I(i),R||b(i))},end:function(){S&&this.endImageWorker(),R&&this.endMetricsWorker()},startWorkers:function(e,t=[this.ACUANT_IMAGE_WORKER,this.ACUANT_METRICS_WORKER],i=0){e?(T(n,e),t.includes(this.ACUANT_IMAGE_WORKER)&&!S&&I(i),t.includes(this.ACUANT_METRICS_WORKER)&&!R&&b(i)):M("startWorkers did not have a user callback set")},endWorkers:function(e=[this.ACUANT_IMAGE_WORKER,this.ACUANT_METRICS_WORKER]){e.includes(this.ACUANT_IMAGE_WORKER)&&S&&(S.terminate(),S.onmessage=null,P=!1,S=null),e.includes(this.ACUANT_METRICS_WORKER)&&R&&(R.terminate(),R.onmessage=null,C=!1,R=null)},initialize:function(e,t,i,n=0){i?(T(o,i),y?B(y,"initialize",{creds:e,endpoint:t}):this.startInitializer((()=>{B(y,"initialize",{creds:e,endpoint:t})}),n)):M("initialize did not have a user callback set")},initializeWithToken:function(e,t,i,n=0){i?(T(o,i),y?B(y,"initializeWithToken",{token:e,endpoint:t}):this.startInitializer((()=>{B(y,"initializeWithToken",{token:e,endpoint:t})}),n)):M("initializeWithToken did not have a user callback set")},crop:function(e,t,i,n){h?n?P&&null!=e?(T(l,n),B(S,"crop",{imgData:e.data,width:t,height:i})):n.onFail():M("crop did not have a user callback set"):M("SDK was not initialized")},detect:function(e,t,i,n){h?n?P&&null!=e?(T(s,n),B(S,"detect",{imgData:e.data,width:t,height:i})):n.onFail():M("detect did not have a user callback set"):M("SDK was not initialized")},metrics:function(e,t,i,n){h?n?C&&null!=e?(T(m,n),B(R,"metrics",{imgData:e.data,width:t,height:i})):n.onFail():M("metrics did not have a user callback set"):M("SDK was not initialized")},moire:function(e,t,i,n){h?n?C&&null!=e?(T(c,n),B(R,"moire",{imgData:e.data,width:t,height:i})):n.onFail():M("moire did not have a user callback set"):M("SDK was not initialized")},sign:function(e,t){h?t?P&&e?(T(p,t),B(S,"sign",{imgData:e})):t.onFail():M("sign did not have a user callback set"):M("SDK was not initialized")},verify:function(e,t){h?t?P&&e?(T(u,t),B(S,"verify",{imgData:e})):t.onFail():M("verify did not have a user callback set"):M("SDK was not initialized")},getCvmlVersion:function(e){h?e?P?(T(d,e),B(S,d)):e.onFail():M("verify did not have a user callback set"):M("SDK was not initialized")},addMetadata:function(e,{make:t=navigator.platform,model:i=navigator.userAgent,software:n="Acuant JavascriptWeb SDK "+AcuantConfig.acuantVersion,imageDescription:a=null,dateTimeOriginal:r,userComment:o="=".repeat(100)}){if(!h)return void M("SDK was not initialized");let l={},s={};l[piexif.ImageIFD.Make]=t,l[piexif.ImageIFD.Model]=i,l[piexif.ImageIFD.Software]=n,a&&(l[piexif.ImageIFD.ImageDescription]=a),s[piexif.ExifIFD.DateTimeOriginal]=r,s[piexif.ExifIFD.UserComment]=o;let m={"0th":l,Exif:s},c=piexif.dump(m);return piexif.insert(c,e)},setUnexpectedErrorCallback:function(e){T(f,e)}};const i="initStart",n="workersStart",a="imageWorkerStart",r="metricsWorkerStart",o="init",l="crop",s="detect",m="metrics",c="moire",p="sign",u="verify",d="getCvmlVersion",f="unexpectedError";let h=!1,y=null,g=!1,S=null,P=!1,R=null,C=!1,A=0,k={},D={},L=!1;function I(t=0){let i=null;e&&e.cdnPath&&e.cdnPath.imageUrl?i=e.cdnPath.imageUrl:e.path&&(i=e.path),A++,S=new Worker(O(i,"AcuantImageWorker.min.js",t)),S.onmessage=E,S.onerror=function(){M("imageWorker has failed")}}function b(t=0){let i=null;e&&e.cdnPath&&e.cdnPath.metricsUrl?i=e.cdnPath.metricsUrl:e.path&&(i=e.path),A++,R=new Worker(O(i,"AcuantMetricsWorker.min.js",t)),R.onmessage=x,R.onerror=function(){M("metricsWorker has failed")}}function w(e){if(h=!1,e){let n=e.data;if(g)if(n&&"initialize"===n.func){let e=n.status,i=k[o];t.endInitializer(),i?1==e?(h=!0,i.onSuccess()):i.onFail(e,function(e){switch(e){case 401:return"Server returned a 401 (missing credentials).";case 403:return"Server returned a 403 (invalid credentials).";case 400:return"Server returned a 400.";case 2:return"Token Validation Failed (Recieved token, but token was null/corrupt).";case 3:return"Token Validation Failed (Recieved token, but token was missing part of body).";case 4:return"Token Validation Failed (Recieved token, but token body was missing fields).";case 5:return"Token Validation Failed (Recieved token, but token body failed validation).";case 6:return"At least one param was null/invalid.";case 7:return"Incorrectly formatted message to worker.";default:return"Unexpected error code."}}(e)):M("initialize did not have a user callback set")}else M("initworker sent message without correct function tagging");else{g=!0;let e=k[i];e&&e()}}else M("initworker sent message without anything in the body")}function E(e){if(e){let t=e.data;if(P)if(t&&"detect"===t.func){const e=k[s];e?t.type&&t.x1&&t.y1&&t.x2&&t.y2&&t.x3&&t.y3&&t.x4&&t.y4?function(e,t,i,n,a,r,o,l,s,m){if(m)if(-1==e)m.onFail();else{let c=function(e,t,i,n,a,r,o,l){let s={x:e,y:t},m={x:i,y:n},c={x:a,y:r},p={x:o,y:l},u=G(s,m),d=G(m,c),f=G(c,p),h=G(p,s),y=(u+f)/2,g=(d+h)/2;return y>g?{width:y,height:g}:{width:g,height:y}}(t,i,n,a,r,o,l,s),p=function(e,t){let i=!1,n=5,a=1.42,r=1.5887;if(2==t){let t=(100+n)/100*a;e>=(100-n)/100*a&&e<=t&&(i=!0)}else if(1==t){let t=(100+n)/100*r;e>=(100-n)/100*r&&e<=t&&(i=!0)}return i}(c.width/c.height,e),u=F(c.width,c.height,2==e),d=function(e){let t=[-1,-1,-1,-1];e&&4===e.length&&(v(t,e[0],e[2]),v(t,e[1],e[3]));return t}([{x:t,y:i},{x:n,y:a},{x:r,y:o},{x:l,y:s}]);m.onSuccess({type:e,dimensions:c,dpi:u,isCorrectAspectRatio:p,points:d})}}(t.type,t.x1,t.y1,t.x2,t.y2,t.x3,t.y3,t.x4,t.y4,e):e.onFail():M("detect did not have a user callback set")}else if(t&&"crop"===t.func){const e=k[l];e?t.imgData&&t.width&&t.height&&t.type?function(e,t,i,n,a){a&&(null!=e&&t>=0&&i>=0&&n>=0?(D={image:{data:e,width:t,height:i},cardType:n,dpi:F(t,i,2==n)},a.onSuccess(D)):a.onFail())}(t.imgData,t.width,t.height,t.type,e):t.error?e.onFail(t.error):e.onFail():M("crop did not have a user callback set")}else if(t&&"sign"===t.func){const e=k[p];e?t.imgData?function(e,t){t&&(e?t.onSuccess(e):t.onFail())}(t.imgData,e):t.error?e.onFail(t.error):e.onFail():M("sign did not have a user callback set")}else if(t&&"verify"===t.func){const e=k[u];e?t.result||!1===t.result?function(e,t){t&&(e||!1===e?t.onSuccess(e):t.onFail())}(t.result,e):e.onFail():M("verify did not have a user callback set")}else if(t&&t.func===d){let e=k[d];e?function(e,t){e?t.onSuccess(e):t.onFail()}(t.cvmlVersion,e):M("getCvmlVersion did not have a user callback set")}else M("imageworker sent message without correct function tagging");else P=!0,_()}else M("imageworker sent message without anything in the body")}function x(e){if(e){let t=e.data;if(C)if(t&&"metrics"===t.func){const e=k[m];e?t.sharpness&&t.glare?function(e,t,i){if(i)if(t>=0&&e>=0){let n=Math.floor(100*e),a=Math.floor(100*t);i.onSuccess(n,a)}else i.onFail()}(t.sharpness,t.glare,e):t.error?e.onFail(t.error):e.onFail():M("metrics did not have a user callback set")}else if("moire"===t.func){const e=k[c];e?t.moire&&t.moireraw?function(e,t,i){if(i)if(e>=0&&t>=0){let n=Math.floor(100*e),a=Math.floor(100*t);i.onSuccess(n,a)}else i.onFail()}(t.moire,t.moireraw,e):t.error?e.onFail(t.error):e.onFail():M("moire did not have a user callback set")}else M("metricsworker sent message without correct function tagging");else C=!0,_()}else M("metricsworker sent message without anything in the body")}function v(e,t,i){return t.xi.x&&t.y>i.y?(e[0]=i,e[2]=t):t.x>i.x&&t.yt?e:t,a=i?4.92:3.37;return Math.round(n/a)}function T(e,t){k[e]=t}function M(e){let t=k[f];t?e?t(e):t():console.error("Error: ",e)}function O(e,t,i){let n;return null!=e&&e.length>0&&0==i?(n="/"===e.charAt(e.length-1)?e:e+"/",n+=t):n=0!=i?e:t,n}function B(e,t,i,n=!1){let a={func:t,data:i};n&&i&&i.imgData&&i.imgData.buffer?e.postMessage(a,[a.data.imgData.buffer]):e.postMessage(a)}function _(){const e=k[n],t=k[a],i=k[r];--A,0==A&&(e?(T(n,null),e()):t?(T(a,null),t()):i&&(T(r,null),i()))}return t}(config),"function"==typeof onAcuantSdkLoaded&&onAcuantSdkLoaded()}!function(){"use strict";let e={};function t(e){return m(">"+p("B",e.length),e)}function i(e){return m(">"+p("H",e.length),e)}function n(e){return m(">"+p("L",e.length),e)}function a(e,a,r){let o,l,s,c,u="",d="";if("Byte"==a)o=e.length,o<=4?d=t(e)+p("\0",4-o):(d=m(">L",[r]),u=t(e));else if("Short"==a)o=e.length,o<=2?d=i(e)+p("\0\0",2-o):(d=m(">L",[r]),u=i(e));else if("Long"==a)o=e.length,o<=1?d=n(e):(d=m(">L",[r]),u=n(e));else if("Ascii"==a)l=e+"\0",o=l.length,o>4?(d=m(">L",[r]),u=l):d=l+p("\0",4-o);else if("Rational"==a){if("number"==typeof e[0])o=1,s=e[0],c=e[1],l=m(">L",[s])+m(">L",[c]);else{o=e.length,l="";for(var f=0;fL",[s])+m(">L",[c])}d=m(">L",[r]),u=l}else if("SRational"==a){if("number"==typeof e[0])o=1,s=e[0],c=e[1],l=m(">l",[s])+m(">l",[c]);else{o=e.length,l="";for(f=0;fl",[s])+m(">l",[c])}d=m(">L",[r]),u=l}else"Undefined"==a&&(o=e.length,o>4?(d=m(">L",[r]),u=e):d=e+p("\0",4-o));return[m(">L",[o]),d,u]}function r(e,t,i){let n,r=Object.keys(e).length,o=m(">H",[r]);n=["0th","1st"].indexOf(t)>-1?2+12*r+4:2+12*r;let l="",s="";for(var c in e){if("string"==typeof c&&(c=parseInt(c)),"0th"==t&&[34665,34853].indexOf(c)>-1)continue;if("Exif"==t&&40965==c)continue;if("1st"==t&&[513,514].indexOf(c)>-1)continue;let r=e[c],o=m(">H",[c]),p=f[t][c].type,u=m(">H",[d[p]]);"number"==typeof r&&(r=[r]);let h=a(r,p,8+n+i+s.length);l+=o+u+h[0]+h[1],s+=h[2]}return[o+l,s]}function o(e){let t,i;if("ÿØ"==e.slice(0,2))t=u(e),i=function(e){let t;for(let i=0;i-1)this.tiftag=e;else{if("Exif"!=e.slice(0,4))throw new Error("Given file is neither JPEG nor TIFF.");this.tiftag=e.slice(6)}}if(e.version="1.0.4",e.remove=function(e){let t=!1;if("ÿØ"==e.slice(0,2));else{if("data:image/jpeg;base64,"!=e.slice(0,23)&&"data:image/jpg;base64,"!=e.slice(0,22))throw new Error("Given data is not jpeg.");e=s(e.split(",")[1]),t=!0}let i=u(e).filter((function(e){return!("ÿá"==e.slice(0,2)&&"Exif\0\0"==e.slice(4,10))})).join("");return t&&(i="data:image/jpeg;base64,"+l(i)),i},e.insert=function(e,t){let i=!1;if("Exif\0\0"!=e.slice(0,6))throw new Error("Given data is not exif.");if("ÿØ"==t.slice(0,2));else{if("data:image/jpeg;base64,"!=t.slice(0,23)&&"data:image/jpg;base64,"!=t.slice(0,22))throw new Error("Given data is not jpeg.");t=s(t.split(",")[1]),i=!0}let n="ÿá"+m(">H",[e.length+2])+e,a=function(e,t){let i=!1,n=[];e.forEach((function(a,r){"ÿá"==a.slice(0,2)&&"Exif\0\0"==a.slice(4,10)&&(i?n.unshift(r):(e[r]=t,i=!0))})),n.forEach((function(t){e.splice(t,1)})),!i&&t&&(e=[e[0],t].concat(e.slice(1)));return e.join("")}(u(t),n);return i&&(a="data:image/jpeg;base64,"+l(a)),a},e.load=function(e){let t;if("string"!=typeof e)throw new Error("'load' gots invalid type argument.");if("ÿØ"==e.slice(0,2))t=e;else if("data:image/jpeg;base64,"==e.slice(0,23)||"data:image/jpg;base64,"==e.slice(0,22))t=s(e.split(",")[1]);else{if("Exif"!=e.slice(0,4))throw new Error("'load' gots invalid file data.");t=e.slice(6)}let i={"0th":{},Exif:{},GPS:{},Interop:{},"1st":{},thumbnail:null},n=new o(t);if(null===n.tiftag)return i;"II"==n.tiftag.slice(0,2)?n.endian_mark="<":n.endian_mark=">";let a=c(n.endian_mark+"L",n.tiftag.slice(4,8))[0];i["0th"]=n.get_ifd(a,"0th");let r=i["0th"].first_ifd_pointer;if(delete i["0th"].first_ifd_pointer,34665 in i["0th"]&&(a=i["0th"][34665],i.Exif=n.get_ifd(a,"Exif")),34853 in i["0th"]&&(a=i["0th"][34853],i.GPS=n.get_ifd(a,"GPS")),40965 in i.Exif&&(a=i.Exif[40965],i.Interop=n.get_ifd(a,"Interop")),"\0\0\0\0"!=r&&(a=c(n.endian_mark+"L",r)[0],i["1st"]=n.get_ifd(a,"1st"),513 in i["1st"]&&514 in i["1st"])){let e=i["1st"][513]+i["1st"][514],t=n.tiftag.slice(i["1st"][513],e);i.thumbnail=t}return i},e.dump=function(t){let i=(n=t,JSON.parse(JSON.stringify(n)));var n;let a,o,l,s,c,p=!1,f=!1,h=!1,y=!1;a="0th"in i?i["0th"]:{},"Exif"in i&&Object.keys(i.Exif).length||"Interop"in i&&Object.keys(i.Interop).length?(a[34665]=1,p=!0,o=i.Exif,"Interop"in i&&Object.keys(i.Interop).length?(o[40965]=1,h=!0,l=i.Interop):Object.keys(o).indexOf(e.ExifIFD.InteroperabilityTag.toString())>-1&&delete o[40965]):Object.keys(a).indexOf(e.ImageIFD.ExifTag.toString())>-1&&delete a[34665],"GPS"in i&&Object.keys(i.GPS).length?(a[e.ImageIFD.GPSTag]=1,f=!0,s=i.GPS):Object.keys(a).indexOf(e.ImageIFD.GPSTag.toString())>-1&&delete a[e.ImageIFD.GPSTag],"1st"in i&&"thumbnail"in i&&null!=i.thumbnail&&(y=!0,i["1st"][513]=1,i["1st"][514]=1,c=i["1st"]);let g,S,P,R,C,A=r(a,"0th",0),k=A[0].length+12*p+12*f+4+A[1].length,D="",L=0,I="",b=0,w="",E=0,x="";(p&&(g=r(o,"Exif",k),L=g[0].length+12*h+g[1].length),f&&(S=r(s,"GPS",k+L),I=S.join(""),b=I.length),h)&&(P=r(l,"Interop",k+L+b),w=P.join(""),E=w.length);if(y&&(R=r(c,"1st",k+L+b+E),C=function(e){let t=u(e);for(;"ÿà"<=t[1].slice(0,2)&&t[1].slice(0,2)<="ÿï";)t=[t[0]].concat(t.slice(2));return t.join("")}(i.thumbnail),C.length>64e3))throw new Error("Given thumbnail is too large. max 64kB");let v="",G="",F="",T="\0\0\0\0";if(p){var M=m(">L",[O=8+k]);v=m(">H",[34665])+m(">H",[d.Long])+m(">L",[1])+M}if(f){M=m(">L",[O=8+k+L]);G=m(">H",[34853])+m(">H",[d.Long])+m(">L",[1])+M}if(h){M=m(">L",[O=8+k+L+b]);F=m(">H",[40965])+m(">H",[d.Long])+m(">L",[1])+M}if(y){var O;T=m(">L",[O=8+k+L+b+E]);let e="\0\0\0\0"+m(">L",[O+R[0].length+24+4+R[1].length]),t="\0\0\0\0"+m(">L",[C.length]);x=R[0]+e+t+"\0\0\0\0"+R[1]+C}let B=A[0]+v+G+T+A[1];return p&&(D=g[0]+F+g[1]),"Exif\0\0MM\0*\0\0\0\b"+B+D+I+w+x},o.prototype={get_ifd:function(e,t){let i,n={},a=c(this.endian_mark+"H",this.tiftag.slice(e,e+2))[0],r=e+2;i=["0th","1st"].indexOf(t)>-1?"Image":t;for(let t=0;t4?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("B",a),this.tiftag.slice(t,t+a))):i=c(this.endian_mark+p("B",a),r.slice(0,a));else if(2==n)a>4?(t=c(this.endian_mark+"L",r)[0],i=this.tiftag.slice(t,t+a-1)):i=r.slice(0,a-1);else if(3==n)a>2?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("H",a),this.tiftag.slice(t,t+2*a))):i=c(this.endian_mark+p("H",a),r.slice(0,2*a));else if(4==n)a>1?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("L",a),this.tiftag.slice(t,t+4*a))):i=c(this.endian_mark+p("L",a),r);else if(5==n)if(t=c(this.endian_mark+"L",r)[0],a>1){i=[];for(var o=0;o4?(t=c(this.endian_mark+"L",r)[0],i=this.tiftag.slice(t,t+a)):i=r.slice(0,a);else if(9==n)a>1?(t=c(this.endian_mark+"L",r)[0],i=c(this.endian_mark+p("l",a),this.tiftag.slice(t,t+4*a))):i=c(this.endian_mark+p("l",a),r);else{if(10!=n)throw new Error("Exif might be wrong. Got incorrect value type to decode. type:"+n);if(t=c(this.endian_mark+"L",r)[0],a>1){i=[];for(o=0;o>2,r=(3&t)<<4|i>>4,o=(15&i)<<2|n>>6,l=63&n,isNaN(i)?o=l=64:isNaN(n)&&(l=64),s=s+c.charAt(a)+c.charAt(r)+c.charAt(o)+c.charAt(l);return s};if("undefined"!=typeof window&&"function"==typeof window.atob)var s=window.atob;if(void 0===s)s=function(e){let t,i,n,a,r,o,l,s="",m=0,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");m>4,i=(15&r)<<4|o>>2,n=(3&o)<<6|l,s+=String.fromCharCode(t),64!=o&&(s+=String.fromCharCode(i)),64!=l&&(s+=String.fromCharCode(n));return s};function m(e,t){if(!(t instanceof Array))throw new Error("'pack' error. Got invalid type argument.");if(e.length-1!=t.length)throw new Error("'pack' error. "+(e.length-1)+" marks, "+t.length+" elements.");let i;if("<"==e[0])i=!0;else{if(">"!=e[0])throw new Error("");i=!1}let n="",a=1,r=null,o=null,l=null;for(;o=e[a];){if("b"==o.toLowerCase()){if(r=t[a-1],"b"==o&&r<0&&(r+=256),r>255||r<0)throw new Error("'pack' error.");l=String.fromCharCode(r)}else if("H"==o){if(r=t[a-1],r>65535||r<0)throw new Error("'pack' error.");l=String.fromCharCode(Math.floor(r%65536/256))+String.fromCharCode(r%256),i&&(l=l.split("").reverse().join(""))}else{if("l"!=o.toLowerCase())throw new Error("'pack' error.");if(r=t[a-1],"l"==o&&r<0&&(r+=4294967296),r>4294967295||r<0)throw new Error("'pack' error.");l=String.fromCharCode(Math.floor(r/16777216))+String.fromCharCode(Math.floor(r%16777216/65536))+String.fromCharCode(Math.floor(r%65536/256))+String.fromCharCode(r%256),i&&(l=l.split("").reverse().join(""))}n+=l,a+=1}return n}function c(e,t){if("string"!=typeof t)throw new Error("'unpack' error. Got invalid type argument.");let i,n=0;for(let t=1;t"!=e[0])throw new Error("'unpack' error.");i=!1}let a=[],r=0,o=1,l=null,s=null,m=null,c="";for(;s=e[o];){if("b"==s.toLowerCase())m=1,c=t.slice(r,r+m),l=c.charCodeAt(0),"b"==s&&l>=128&&(l-=256);else if("H"==s)m=2,c=t.slice(r,r+m),i&&(c=c.split("").reverse().join("")),l=256*c.charCodeAt(0)+c.charCodeAt(1);else{if("l"!=s.toLowerCase())throw new Error("'unpack' error. "+s);m=4,c=t.slice(r,r+m),i&&(c=c.split("").reverse().join("")),l=16777216*c.charCodeAt(0)+65536*c.charCodeAt(1)+256*c.charCodeAt(2)+c.charCodeAt(3),"l"==s&&l>=2147483648&&(l-=4294967296)}a.push(l),r+=m,o+=1}return a}function p(e,t){let i="";for(let n=0;nH",e.slice(t+2,t+4))[0]+2;i.push(e.slice(t,n)),t=n}if(t>=e.length)throw new Error("Wrong JPEG data.")}return i}var d={Byte:1,Ascii:2,Short:3,Long:4,Rational:5,Undefined:7,SLong:9,SRational:10},f={Image:{11:{name:"ProcessingSoftware",type:"Ascii"},254:{name:"NewSubfileType",type:"Long"},255:{name:"SubfileType",type:"Short"},256:{name:"ImageWidth",type:"Long"},257:{name:"ImageLength",type:"Long"},258:{name:"BitsPerSample",type:"Short"},259:{name:"Compression",type:"Short"},262:{name:"PhotometricInterpretation",type:"Short"},263:{name:"Threshholding",type:"Short"},264:{name:"CellWidth",type:"Short"},265:{name:"CellLength",type:"Short"},266:{name:"FillOrder",type:"Short"},269:{name:"DocumentName",type:"Ascii"},270:{name:"ImageDescription",type:"Ascii"},271:{name:"Make",type:"Ascii"},272:{name:"Model",type:"Ascii"},273:{name:"StripOffsets",type:"Long"},274:{name:"Orientation",type:"Short"},277:{name:"SamplesPerPixel",type:"Short"},278:{name:"RowsPerStrip",type:"Long"},279:{name:"StripByteCounts",type:"Long"},282:{name:"XResolution",type:"Rational"},283:{name:"YResolution",type:"Rational"},284:{name:"PlanarConfiguration",type:"Short"},290:{name:"GrayResponseUnit",type:"Short"},291:{name:"GrayResponseCurve",type:"Short"},292:{name:"T4Options",type:"Long"},293:{name:"T6Options",type:"Long"},296:{name:"ResolutionUnit",type:"Short"},301:{name:"TransferFunction",type:"Short"},305:{name:"Software",type:"Ascii"},306:{name:"DateTime",type:"Ascii"},315:{name:"Artist",type:"Ascii"},316:{name:"HostComputer",type:"Ascii"},317:{name:"Predictor",type:"Short"},318:{name:"WhitePoint",type:"Rational"},319:{name:"PrimaryChromaticities",type:"Rational"},320:{name:"ColorMap",type:"Short"},321:{name:"HalftoneHints",type:"Short"},322:{name:"TileWidth",type:"Short"},323:{name:"TileLength",type:"Short"},324:{name:"TileOffsets",type:"Short"},325:{name:"TileByteCounts",type:"Short"},330:{name:"SubIFDs",type:"Long"},332:{name:"InkSet",type:"Short"},333:{name:"InkNames",type:"Ascii"},334:{name:"NumberOfInks",type:"Short"},336:{name:"DotRange",type:"Byte"},337:{name:"TargetPrinter",type:"Ascii"},338:{name:"ExtraSamples",type:"Short"},339:{name:"SampleFormat",type:"Short"},340:{name:"SMinSampleValue",type:"Short"},341:{name:"SMaxSampleValue",type:"Short"},342:{name:"TransferRange",type:"Short"},343:{name:"ClipPath",type:"Byte"},344:{name:"XClipPathUnits",type:"Long"},345:{name:"YClipPathUnits",type:"Long"},346:{name:"Indexed",type:"Short"},347:{name:"JPEGTables",type:"Undefined"},351:{name:"OPIProxy",type:"Short"},512:{name:"JPEGProc",type:"Long"},513:{name:"JPEGInterchangeFormat",type:"Long"},514:{name:"JPEGInterchangeFormatLength",type:"Long"},515:{name:"JPEGRestartInterval",type:"Short"},517:{name:"JPEGLosslessPredictors",type:"Short"},518:{name:"JPEGPointTransforms",type:"Short"},519:{name:"JPEGQTables",type:"Long"},520:{name:"JPEGDCTables",type:"Long"},521:{name:"JPEGACTables",type:"Long"},529:{name:"YCbCrCoefficients",type:"Rational"},530:{name:"YCbCrSubSampling",type:"Short"},531:{name:"YCbCrPositioning",type:"Short"},532:{name:"ReferenceBlackWhite",type:"Rational"},700:{name:"XMLPacket",type:"Byte"},18246:{name:"Rating",type:"Short"},18249:{name:"RatingPercent",type:"Short"},32781:{name:"ImageID",type:"Ascii"},33421:{name:"CFARepeatPatternDim",type:"Short"},33422:{name:"CFAPattern",type:"Byte"},33423:{name:"BatteryLevel",type:"Rational"},33432:{name:"Copyright",type:"Ascii"},33434:{name:"ExposureTime",type:"Rational"},34377:{name:"ImageResources",type:"Byte"},34665:{name:"ExifTag",type:"Long"},34675:{name:"InterColorProfile",type:"Undefined"},34853:{name:"GPSTag",type:"Long"},34857:{name:"Interlace",type:"Short"},34858:{name:"TimeZoneOffset",type:"Long"},34859:{name:"SelfTimerMode",type:"Short"},37387:{name:"FlashEnergy",type:"Rational"},37388:{name:"SpatialFrequencyResponse",type:"Undefined"},37389:{name:"Noise",type:"Undefined"},37390:{name:"FocalPlaneXResolution",type:"Rational"},37391:{name:"FocalPlaneYResolution",type:"Rational"},37392:{name:"FocalPlaneResolutionUnit",type:"Short"},37393:{name:"ImageNumber",type:"Long"},37394:{name:"SecurityClassification",type:"Ascii"},37395:{name:"ImageHistory",type:"Ascii"},37397:{name:"ExposureIndex",type:"Rational"},37398:{name:"TIFFEPStandardID",type:"Byte"},37399:{name:"SensingMethod",type:"Short"},40091:{name:"XPTitle",type:"Byte"},40092:{name:"XPComment",type:"Byte"},40093:{name:"XPAuthor",type:"Byte"},40094:{name:"XPKeywords",type:"Byte"},40095:{name:"XPSubject",type:"Byte"},50341:{name:"PrintImageMatching",type:"Undefined"},50706:{name:"DNGVersion",type:"Byte"},50707:{name:"DNGBackwardVersion",type:"Byte"},50708:{name:"UniqueCameraModel",type:"Ascii"},50709:{name:"LocalizedCameraModel",type:"Byte"},50710:{name:"CFAPlaneColor",type:"Byte"},50711:{name:"CFALayout",type:"Short"},50712:{name:"LinearizationTable",type:"Short"},50713:{name:"BlackLevelRepeatDim",type:"Short"},50714:{name:"BlackLevel",type:"Rational"},50715:{name:"BlackLevelDeltaH",type:"SRational"},50716:{name:"BlackLevelDeltaV",type:"SRational"},50717:{name:"WhiteLevel",type:"Short"},50718:{name:"DefaultScale",type:"Rational"},50719:{name:"DefaultCropOrigin",type:"Short"},50720:{name:"DefaultCropSize",type:"Short"},50721:{name:"ColorMatrix1",type:"SRational"},50722:{name:"ColorMatrix2",type:"SRational"},50723:{name:"CameraCalibration1",type:"SRational"},50724:{name:"CameraCalibration2",type:"SRational"},50725:{name:"ReductionMatrix1",type:"SRational"},50726:{name:"ReductionMatrix2",type:"SRational"},50727:{name:"AnalogBalance",type:"Rational"},50728:{name:"AsShotNeutral",type:"Short"},50729:{name:"AsShotWhiteXY",type:"Rational"},50730:{name:"BaselineExposure",type:"SRational"},50731:{name:"BaselineNoise",type:"Rational"},50732:{name:"BaselineSharpness",type:"Rational"},50733:{name:"BayerGreenSplit",type:"Long"},50734:{name:"LinearResponseLimit",type:"Rational"},50735:{name:"CameraSerialNumber",type:"Ascii"},50736:{name:"LensInfo",type:"Rational"},50737:{name:"ChromaBlurRadius",type:"Rational"},50738:{name:"AntiAliasStrength",type:"Rational"},50739:{name:"ShadowScale",type:"SRational"},50740:{name:"DNGPrivateData",type:"Byte"},50741:{name:"MakerNoteSafety",type:"Short"},50778:{name:"CalibrationIlluminant1",type:"Short"},50779:{name:"CalibrationIlluminant2",type:"Short"},50780:{name:"BestQualityScale",type:"Rational"},50781:{name:"RawDataUniqueID",type:"Byte"},50827:{name:"OriginalRawFileName",type:"Byte"},50828:{name:"OriginalRawFileData",type:"Undefined"},50829:{name:"ActiveArea",type:"Short"},50830:{name:"MaskedAreas",type:"Short"},50831:{name:"AsShotICCProfile",type:"Undefined"},50832:{name:"AsShotPreProfileMatrix",type:"SRational"},50833:{name:"CurrentICCProfile",type:"Undefined"},50834:{name:"CurrentPreProfileMatrix",type:"SRational"},50879:{name:"ColorimetricReference",type:"Short"},50931:{name:"CameraCalibrationSignature",type:"Byte"},50932:{name:"ProfileCalibrationSignature",type:"Byte"},50934:{name:"AsShotProfileName",type:"Byte"},50935:{name:"NoiseReductionApplied",type:"Rational"},50936:{name:"ProfileName",type:"Byte"},50937:{name:"ProfileHueSatMapDims",type:"Long"},50938:{name:"ProfileHueSatMapData1",type:"Float"},50939:{name:"ProfileHueSatMapData2",type:"Float"},50940:{name:"ProfileToneCurve",type:"Float"},50941:{name:"ProfileEmbedPolicy",type:"Long"},50942:{name:"ProfileCopyright",type:"Byte"},50964:{name:"ForwardMatrix1",type:"SRational"},50965:{name:"ForwardMatrix2",type:"SRational"},50966:{name:"PreviewApplicationName",type:"Byte"},50967:{name:"PreviewApplicationVersion",type:"Byte"},50968:{name:"PreviewSettingsName",type:"Byte"},50969:{name:"PreviewSettingsDigest",type:"Byte"},50970:{name:"PreviewColorSpace",type:"Long"},50971:{name:"PreviewDateTime",type:"Ascii"},50972:{name:"RawImageDigest",type:"Undefined"},50973:{name:"OriginalRawFileDigest",type:"Undefined"},50974:{name:"SubTileBlockSize",type:"Long"},50975:{name:"RowInterleaveFactor",type:"Long"},50981:{name:"ProfileLookTableDims",type:"Long"},50982:{name:"ProfileLookTableData",type:"Float"},51008:{name:"OpcodeList1",type:"Undefined"},51009:{name:"OpcodeList2",type:"Undefined"},51022:{name:"OpcodeList3",type:"Undefined"}},Exif:{33434:{name:"ExposureTime",type:"Rational"},33437:{name:"FNumber",type:"Rational"},34850:{name:"ExposureProgram",type:"Short"},34852:{name:"SpectralSensitivity",type:"Ascii"},34855:{name:"ISOSpeedRatings",type:"Short"},34856:{name:"OECF",type:"Undefined"},34864:{name:"SensitivityType",type:"Short"},34865:{name:"StandardOutputSensitivity",type:"Long"},34866:{name:"RecommendedExposureIndex",type:"Long"},34867:{name:"ISOSpeed",type:"Long"},34868:{name:"ISOSpeedLatitudeyyy",type:"Long"},34869:{name:"ISOSpeedLatitudezzz",type:"Long"},36864:{name:"ExifVersion",type:"Undefined"},36867:{name:"DateTimeOriginal",type:"Ascii"},36868:{name:"DateTimeDigitized",type:"Ascii"},37121:{name:"ComponentsConfiguration",type:"Undefined"},37122:{name:"CompressedBitsPerPixel",type:"Rational"},37377:{name:"ShutterSpeedValue",type:"SRational"},37378:{name:"ApertureValue",type:"Rational"},37379:{name:"BrightnessValue",type:"SRational"},37380:{name:"ExposureBiasValue",type:"SRational"},37381:{name:"MaxApertureValue",type:"Rational"},37382:{name:"SubjectDistance",type:"Rational"},37383:{name:"MeteringMode",type:"Short"},37384:{name:"LightSource",type:"Short"},37385:{name:"Flash",type:"Short"},37386:{name:"FocalLength",type:"Rational"},37396:{name:"SubjectArea",type:"Short"},37500:{name:"MakerNote",type:"Undefined"},37510:{name:"UserComment",type:"Ascii"},37520:{name:"SubSecTime",type:"Ascii"},37521:{name:"SubSecTimeOriginal",type:"Ascii"},37522:{name:"SubSecTimeDigitized",type:"Ascii"},40960:{name:"FlashpixVersion",type:"Undefined"},40961:{name:"ColorSpace",type:"Short"},40962:{name:"PixelXDimension",type:"Long"},40963:{name:"PixelYDimension",type:"Long"},40964:{name:"RelatedSoundFile",type:"Ascii"},40965:{name:"InteroperabilityTag",type:"Long"},41483:{name:"FlashEnergy",type:"Rational"},41484:{name:"SpatialFrequencyResponse",type:"Undefined"},41486:{name:"FocalPlaneXResolution",type:"Rational"},41487:{name:"FocalPlaneYResolution",type:"Rational"},41488:{name:"FocalPlaneResolutionUnit",type:"Short"},41492:{name:"SubjectLocation",type:"Short"},41493:{name:"ExposureIndex",type:"Rational"},41495:{name:"SensingMethod",type:"Short"},41728:{name:"FileSource",type:"Undefined"},41729:{name:"SceneType",type:"Undefined"},41730:{name:"CFAPattern",type:"Undefined"},41985:{name:"CustomRendered",type:"Short"},41986:{name:"ExposureMode",type:"Short"},41987:{name:"WhiteBalance",type:"Short"},41988:{name:"DigitalZoomRatio",type:"Rational"},41989:{name:"FocalLengthIn35mmFilm",type:"Short"},41990:{name:"SceneCaptureType",type:"Short"},41991:{name:"GainControl",type:"Short"},41992:{name:"Contrast",type:"Short"},41993:{name:"Saturation",type:"Short"},41994:{name:"Sharpness",type:"Short"},41995:{name:"DeviceSettingDescription",type:"Undefined"},41996:{name:"SubjectDistanceRange",type:"Short"},42016:{name:"ImageUniqueID",type:"Ascii"},42032:{name:"CameraOwnerName",type:"Ascii"},42033:{name:"BodySerialNumber",type:"Ascii"},42034:{name:"LensSpecification",type:"Rational"},42035:{name:"LensMake",type:"Ascii"},42036:{name:"LensModel",type:"Ascii"},42037:{name:"LensSerialNumber",type:"Ascii"},42240:{name:"Gamma",type:"Rational"}},GPS:{0:{name:"GPSVersionID",type:"Byte"},1:{name:"GPSLatitudeRef",type:"Ascii"},2:{name:"GPSLatitude",type:"Rational"},3:{name:"GPSLongitudeRef",type:"Ascii"},4:{name:"GPSLongitude",type:"Rational"},5:{name:"GPSAltitudeRef",type:"Byte"},6:{name:"GPSAltitude",type:"Rational"},7:{name:"GPSTimeStamp",type:"Rational"},8:{name:"GPSSatellites",type:"Ascii"},9:{name:"GPSStatus",type:"Ascii"},10:{name:"GPSMeasureMode",type:"Ascii"},11:{name:"GPSDOP",type:"Rational"},12:{name:"GPSSpeedRef",type:"Ascii"},13:{name:"GPSSpeed",type:"Rational"},14:{name:"GPSTrackRef",type:"Ascii"},15:{name:"GPSTrack",type:"Rational"},16:{name:"GPSImgDirectionRef",type:"Ascii"},17:{name:"GPSImgDirection",type:"Rational"},18:{name:"GPSMapDatum",type:"Ascii"},19:{name:"GPSDestLatitudeRef",type:"Ascii"},20:{name:"GPSDestLatitude",type:"Rational"},21:{name:"GPSDestLongitudeRef",type:"Ascii"},22:{name:"GPSDestLongitude",type:"Rational"},23:{name:"GPSDestBearingRef",type:"Ascii"},24:{name:"GPSDestBearing",type:"Rational"},25:{name:"GPSDestDistanceRef",type:"Ascii"},26:{name:"GPSDestDistance",type:"Rational"},27:{name:"GPSProcessingMethod",type:"Undefined"},28:{name:"GPSAreaInformation",type:"Undefined"},29:{name:"GPSDateStamp",type:"Ascii"},30:{name:"GPSDifferential",type:"Short"},31:{name:"GPSHPositioningError",type:"Rational"}},Interop:{1:{name:"InteroperabilityIndex",type:"Ascii"}}};f["0th"]=f.Image,f["1st"]=f.Image,e.TAGS=f,e.ImageIFD={ProcessingSoftware:11,NewSubfileType:254,SubfileType:255,ImageWidth:256,ImageLength:257,BitsPerSample:258,Compression:259,PhotometricInterpretation:262,Threshholding:263,CellWidth:264,CellLength:265,FillOrder:266,DocumentName:269,ImageDescription:270,Make:271,Model:272,StripOffsets:273,Orientation:274,SamplesPerPixel:277,RowsPerStrip:278,StripByteCounts:279,XResolution:282,YResolution:283,PlanarConfiguration:284,GrayResponseUnit:290,GrayResponseCurve:291,T4Options:292,T6Options:293,ResolutionUnit:296,TransferFunction:301,Software:305,DateTime:306,Artist:315,HostComputer:316,Predictor:317,WhitePoint:318,PrimaryChromaticities:319,ColorMap:320,HalftoneHints:321,TileWidth:322,TileLength:323,TileOffsets:324,TileByteCounts:325,SubIFDs:330,InkSet:332,InkNames:333,NumberOfInks:334,DotRange:336,TargetPrinter:337,ExtraSamples:338,SampleFormat:339,SMinSampleValue:340,SMaxSampleValue:341,TransferRange:342,ClipPath:343,XClipPathUnits:344,YClipPathUnits:345,Indexed:346,JPEGTables:347,OPIProxy:351,JPEGProc:512,JPEGInterchangeFormat:513,JPEGInterchangeFormatLength:514,JPEGRestartInterval:515,JPEGLosslessPredictors:517,JPEGPointTransforms:518,JPEGQTables:519,JPEGDCTables:520,JPEGACTables:521,YCbCrCoefficients:529,YCbCrSubSampling:530,YCbCrPositioning:531,ReferenceBlackWhite:532,XMLPacket:700,Rating:18246,RatingPercent:18249,ImageID:32781,CFARepeatPatternDim:33421,CFAPattern:33422,BatteryLevel:33423,Copyright:33432,ExposureTime:33434,ImageResources:34377,ExifTag:34665,InterColorProfile:34675,GPSTag:34853,Interlace:34857,TimeZoneOffset:34858,SelfTimerMode:34859,FlashEnergy:37387,SpatialFrequencyResponse:37388,Noise:37389,FocalPlaneXResolution:37390,FocalPlaneYResolution:37391,FocalPlaneResolutionUnit:37392,ImageNumber:37393,SecurityClassification:37394,ImageHistory:37395,ExposureIndex:37397,TIFFEPStandardID:37398,SensingMethod:37399,XPTitle:40091,XPComment:40092,XPAuthor:40093,XPKeywords:40094,XPSubject:40095,PrintImageMatching:50341,DNGVersion:50706,DNGBackwardVersion:50707,UniqueCameraModel:50708,LocalizedCameraModel:50709,CFAPlaneColor:50710,CFALayout:50711,LinearizationTable:50712,BlackLevelRepeatDim:50713,BlackLevel:50714,BlackLevelDeltaH:50715,BlackLevelDeltaV:50716,WhiteLevel:50717,DefaultScale:50718,DefaultCropOrigin:50719,DefaultCropSize:50720,ColorMatrix1:50721,ColorMatrix2:50722,CameraCalibration1:50723,CameraCalibration2:50724,ReductionMatrix1:50725,ReductionMatrix2:50726,AnalogBalance:50727,AsShotNeutral:50728,AsShotWhiteXY:50729,BaselineExposure:50730,BaselineNoise:50731,BaselineSharpness:50732,BayerGreenSplit:50733,LinearResponseLimit:50734,CameraSerialNumber:50735,LensInfo:50736,ChromaBlurRadius:50737,AntiAliasStrength:50738,ShadowScale:50739,DNGPrivateData:50740,MakerNoteSafety:50741,CalibrationIlluminant1:50778,CalibrationIlluminant2:50779,BestQualityScale:50780,RawDataUniqueID:50781,OriginalRawFileName:50827,OriginalRawFileData:50828,ActiveArea:50829,MaskedAreas:50830,AsShotICCProfile:50831,AsShotPreProfileMatrix:50832,CurrentICCProfile:50833,CurrentPreProfileMatrix:50834,ColorimetricReference:50879,CameraCalibrationSignature:50931,ProfileCalibrationSignature:50932,AsShotProfileName:50934,NoiseReductionApplied:50935,ProfileName:50936,ProfileHueSatMapDims:50937,ProfileHueSatMapData1:50938,ProfileHueSatMapData2:50939,ProfileToneCurve:50940,ProfileEmbedPolicy:50941,ProfileCopyright:50942,ForwardMatrix1:50964,ForwardMatrix2:50965,PreviewApplicationName:50966,PreviewApplicationVersion:50967,PreviewSettingsName:50968,PreviewSettingsDigest:50969,PreviewColorSpace:50970,PreviewDateTime:50971,RawImageDigest:50972,OriginalRawFileDigest:50973,SubTileBlockSize:50974,RowInterleaveFactor:50975,ProfileLookTableDims:50981,ProfileLookTableData:50982,OpcodeList1:51008,OpcodeList2:51009,OpcodeList3:51022,NoiseProfile:51041},e.ExifIFD={ExposureTime:33434,FNumber:33437,ExposureProgram:34850,SpectralSensitivity:34852,ISOSpeedRatings:34855,OECF:34856,SensitivityType:34864,StandardOutputSensitivity:34865,RecommendedExposureIndex:34866,ISOSpeed:34867,ISOSpeedLatitudeyyy:34868,ISOSpeedLatitudezzz:34869,ExifVersion:36864,DateTimeOriginal:36867,DateTimeDigitized:36868,ComponentsConfiguration:37121,CompressedBitsPerPixel:37122,ShutterSpeedValue:37377,ApertureValue:37378,BrightnessValue:37379,ExposureBiasValue:37380,MaxApertureValue:37381,SubjectDistance:37382,MeteringMode:37383,LightSource:37384,Flash:37385,FocalLength:37386,SubjectArea:37396,MakerNote:37500,UserComment:37510,SubSecTime:37520,SubSecTimeOriginal:37521,SubSecTimeDigitized:37522,FlashpixVersion:40960,ColorSpace:40961,PixelXDimension:40962,PixelYDimension:40963,RelatedSoundFile:40964,InteroperabilityTag:40965,FlashEnergy:41483,SpatialFrequencyResponse:41484,FocalPlaneXResolution:41486,FocalPlaneYResolution:41487,FocalPlaneResolutionUnit:41488,SubjectLocation:41492,ExposureIndex:41493,SensingMethod:41495,FileSource:41728,SceneType:41729,CFAPattern:41730,CustomRendered:41985,ExposureMode:41986,WhiteBalance:41987,DigitalZoomRatio:41988,FocalLengthIn35mmFilm:41989,SceneCaptureType:41990,GainControl:41991,Contrast:41992,Saturation:41993,Sharpness:41994,DeviceSettingDescription:41995,SubjectDistanceRange:41996,ImageUniqueID:42016,CameraOwnerName:42032,BodySerialNumber:42033,LensSpecification:42034,LensMake:42035,LensModel:42036,LensSerialNumber:42037,Gamma:42240},e.GPSIFD={GPSVersionID:0,GPSLatitudeRef:1,GPSLatitude:2,GPSLongitudeRef:3,GPSLongitude:4,GPSAltitudeRef:5,GPSAltitude:6,GPSTimeStamp:7,GPSSatellites:8,GPSStatus:9,GPSMeasureMode:10,GPSDOP:11,GPSSpeedRef:12,GPSSpeed:13,GPSTrackRef:14,GPSTrack:15,GPSImgDirectionRef:16,GPSImgDirection:17,GPSMapDatum:18,GPSDestLatitudeRef:19,GPSDestLatitude:20,GPSDestLongitudeRef:21,GPSDestLongitude:22,GPSDestBearingRef:23,GPSDestBearing:24,GPSDestDistanceRef:25,GPSDestDistance:26,GPSProcessingMethod:27,GPSAreaInformation:28,GPSDateStamp:29,GPSDifferential:30,GPSHPositioningError:31},e.InteropIFD={InteroperabilityIndex:1},e.GPSHelper={degToDmsRational:function(e){let t=Math.abs(e),i=t%1*60,n=i%1*60;return[[Math.floor(t),1],[Math.floor(i),1],[Math.round(100*n),100]]},dmsRationalToDeg:function(e,t){let i="S"===t||"W"===t?-1:1;return(e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600)*i}},"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=e),exports.piexif=e):window.piexif=e}(); \ No newline at end of file diff --git a/public/acuant/11.9.3.508/AcuantMetricsService.min.js b/public/acuant/11.9.3.508/AcuantMetricsService.min.js new file mode 100644 index 00000000000..21c0e1dffdc --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantMetricsService.min.js @@ -0,0 +1 @@ +var AcuantMetricsModule=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return"undefined"!=typeof __filename&&(e=e||__filename),function(t){var r,n,o;t=t||{},r||(r=void 0!==t?t:{}),r.ready=new Promise((function(e,t){n=e,o=t})),Object.getOwnPropertyDescriptor(r.ready,"_acuantMetrics")||(Object.defineProperty(r.ready,"_acuantMetrics",{configurable:!0,get:function(){Oe("You are getting _acuantMetrics on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_acuantMetrics",{configurable:!0,set:function(){Oe("You are setting _acuantMetrics on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_acuantMoire")||(Object.defineProperty(r.ready,"_acuantMoire",{configurable:!0,get:function(){Oe("You are getting _acuantMoire on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_acuantMoire",{configurable:!0,set:function(){Oe("You are setting _acuantMoire on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_get_end")||(Object.defineProperty(r.ready,"_emscripten_stack_get_end",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_get_end",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_get_free")||(Object.defineProperty(r.ready,"_emscripten_stack_get_free",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_get_free",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_emscripten_stack_init")||(Object.defineProperty(r.ready,"_emscripten_stack_init",{configurable:!0,get:function(){Oe("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_emscripten_stack_init",{configurable:!0,set:function(){Oe("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackSave")||(Object.defineProperty(r.ready,"_stackSave",{configurable:!0,get:function(){Oe("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackSave",{configurable:!0,set:function(){Oe("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackRestore")||(Object.defineProperty(r.ready,"_stackRestore",{configurable:!0,get:function(){Oe("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackRestore",{configurable:!0,set:function(){Oe("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_stackAlloc")||(Object.defineProperty(r.ready,"_stackAlloc",{configurable:!0,get:function(){Oe("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_stackAlloc",{configurable:!0,set:function(){Oe("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___wasm_call_ctors")||(Object.defineProperty(r.ready,"___wasm_call_ctors",{configurable:!0,get:function(){Oe("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___wasm_call_ctors",{configurable:!0,set:function(){Oe("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_fflush")||(Object.defineProperty(r.ready,"_fflush",{configurable:!0,get:function(){Oe("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_fflush",{configurable:!0,set:function(){Oe("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___errno_location")||(Object.defineProperty(r.ready,"___errno_location",{configurable:!0,get:function(){Oe("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___errno_location",{configurable:!0,set:function(){Oe("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_malloc")||(Object.defineProperty(r.ready,"_malloc",{configurable:!0,get:function(){Oe("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_malloc",{configurable:!0,set:function(){Oe("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_free")||(Object.defineProperty(r.ready,"_free",{configurable:!0,get:function(){Oe("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_free",{configurable:!0,set:function(){Oe("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___cxa_is_pointer_type")||(Object.defineProperty(r.ready,"___cxa_is_pointer_type",{configurable:!0,get:function(){Oe("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___cxa_is_pointer_type",{configurable:!0,set:function(){Oe("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___cxa_can_catch")||(Object.defineProperty(r.ready,"___cxa_can_catch",{configurable:!0,get:function(){Oe("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___cxa_can_catch",{configurable:!0,set:function(){Oe("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"_setThrew")||(Object.defineProperty(r.ready,"_setThrew",{configurable:!0,get:function(){Oe("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"_setThrew",{configurable:!0,set:function(){Oe("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___getTypeName")||(Object.defineProperty(r.ready,"___getTypeName",{configurable:!0,get:function(){Oe("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___getTypeName",{configurable:!0,set:function(){Oe("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(r.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get:function(){Oe("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set:function(){Oe("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(r.ready,"onRuntimeInitialized")||(Object.defineProperty(r.ready,"onRuntimeInitialized",{configurable:!0,get:function(){Oe("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(r.ready,"onRuntimeInitialized",{configurable:!0,set:function(){Oe("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var i,a={};for(i in r)r.hasOwnProperty(i)&&(a[i]=r[i]);var s="./this.program",c="object"==typeof window,d="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=!c&&!u&&!d;if(r.ENVIRONMENT)throw Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var l,E,f,O,h,g="";if(u){if("object"!=typeof process||"function"!=typeof require)throw Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?require("path").dirname(g)+"/":__dirname+"/",l=function(e,t){return O||(O=require("fs")),h||(h=require("path")),e=h.normalize(e),O.readFileSync(e,t?null:"utf8")},f=function(e){return(e=l(e,!0)).buffer||(e=new Uint8Array(e)),R(e.buffer),e},E=function(e,t,r){O||(O=require("fs")),h||(h=require("path")),e=h.normalize(e),O.readFile(e,(function(e,n){e?r(e):t(n.buffer)}))},1=n);)++r;if(16o?n+=String.fromCharCode(o):(o-=65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o))}}else n+=String.fromCharCode(o)}return n}function S(e,t){return e?v(N,e,t):""}function A(e,t,r,n){if(!(0=a)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++i);if(127>=a){if(r>=n)break;t[r++]=a}else{if(2047>=a){if(r+1>=n)break;t[r++]=192|a>>6}else{if(65535>=a){if(r+2>=n)break;t[r++]=224|a>>12}else{if(r+3>=n)break;1114111>18,t[r++]=128|a>>12&63}t[r++]=128|a>>6&63}t[r++]=128|63&a}}return t[r]=0,r-o}function F(e,t,r){R("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),A(e,N,t,r)}function I(e){for(var t=0,r=0;r=n&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),127>=n?++t:t=2047>=n?t+2:65535>=n?t+3:t+4}return t}var j,U,N,x,k,H,C,X,Q,L="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function W(e,t){R(0==e%2,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e>>1,n=r+t/2;!(r>=n)&&k[r];)++r;if(32<(r<<=1)-e&&L)return L.decode(N.subarray(e,r));for(r="",n=0;!(n>=t/2);++n){var o=x[e+2*n>>1];if(0==o)break;r+=String.fromCharCode(o)}return r}function B(e,t,r){if(R(0==t%2,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),R("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),2>r)return 0;var n=t;r=(r-=2)<2*e.length?r/2:e.length;for(var o=0;o>1]=e.charCodeAt(o),t+=2;return x[t>>1]=0,t-n}function G(e){return 2*e.length}function Y(e,t){R(0==e%4,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,n="";!(r>=t/4);){var o=H[e+4*r>>2];if(0==o)break;++r,65536<=o?(o-=65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o)):n+=String.fromCharCode(o)}return n}function V(e,t,r){if(R(0==t%4,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),R("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===r&&(r=2147483647),4>r)return 0;var n=t;r=n+r-4;for(var o=0;o=i)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++o);if(H[t>>2]=i,(t+=4)+4>r)break}return H[t>>2]=0,t-n}function z(e){for(var t=0,r=0;r=n&&++r,t+=4}return t}function Z(e,t){R(0<=e.length,"writeArrayToMemory array must have a length (should be an array or typed array)"),U.set(e,t)}function q(){var e=b.buffer;j=e,r.HEAP8=U=new Int8Array(e),r.HEAP16=x=new Int16Array(e),r.HEAP32=H=new Int32Array(e),r.HEAPU8=N=new Uint8Array(e),r.HEAPU16=k=new Uint16Array(e),r.HEAPU32=C=new Uint32Array(e),r.HEAPF32=X=new Float32Array(e),r.HEAPF64=Q=new Float64Array(e)}r.TOTAL_STACK&&R(5242880===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var K,J=r.INITIAL_MEMORY||16777216;function $(){var e=rr();R(0==(3&e)),C[1+(e>>2)]=34821223,C[2+(e>>2)]=2310721022,H[0]=1668509029}function ee(){if(!M){var e=rr(),t=C[1+(e>>2)];e=C[2+(e>>2)],34821223==t&&2310721022==e||Oe("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+e.toString(16)+" "+t.toString(16)),1668509029!==H[0]&&Oe("Runtime error: The application has corrupted its heap memory area (address zero)!")}}Object.getOwnPropertyDescriptor(r,"INITIAL_MEMORY")||Object.defineProperty(r,"INITIAL_MEMORY",{configurable:!0,get:function(){Oe("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),R(5242880<=J,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+J+"! (TOTAL_STACK=5242880)"),R("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),R(!r.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),R(16777216==J,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");var te=new Int16Array(1),re=new Int8Array(te.buffer);if(te[0]=25459,115!==re[0]||99!==re[1])throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)";var ne=[],oe=[],ie=[],ae=!1;function se(){var e=r.preRun.shift();ne.unshift(e)}R(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),R(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var ce,de,ue,pe=0,le=null,Ee=null,fe={};function Oe(e){r.onAbort&&r.onAbort(e),T(e),M=!0,e="abort("+e+") at ";e:{var t=Error();if(!t.stack){try{throw Error()}catch(e){t=e}if(!t.stack){t="(no stack trace available)";break e}}t=t.stack.toString()}throw r.extraStackTrace&&(t+="\n"+r.extraStackTrace()),t=De(t),e=new WebAssembly.RuntimeError(e+t),o(e),e}function he(){return ce.startsWith("data:application/octet-stream;base64,")}function ge(e){return function(){var t=r.asm;return R(ae,"native function `"+e+"` called before runtime initialization"),R(!0,"native function `"+e+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),t[e]||R(t[e],"exported native function `"+e+"` not found"),t[e].apply(null,arguments)}}if(r.preloadedImages={},r.preloadedAudios={},ce="AcuantMetricsService.wasm",!he()){var _e=ce;ce=r.locateFile?r.locateFile(_e,g):g+_e}function Te(){var e=ce;try{if(e==ce&&y)return new Uint8Array(y);if(f)return f(e);throw"both async and sync fetching of the wasm failed"}catch(e){Oe(e)}}function we(e){for(;0>2]=e},this.C=function(){return H[this.g+4>>2]},this.Aa=function(e){H[this.g+8>>2]=e},this.pa=function(){return H[this.g+8>>2]},this.Ba=function(){H[this.g>>2]=0},this.Y=function(e){U[this.g+12>>0]=e?1:0},this.oa=function(){return 0!=U[this.g+12>>0]},this.Z=function(e){U[this.g+13>>0]=e?1:0},this.ha=function(){return 0!=U[this.g+13>>0]},this.sa=function(e,t){this.Ca(e),this.Aa(t),this.Ba(),this.Y(!1),this.Z(!1)},this.la=function(){H[this.g>>2]=H[this.g>>2]+1},this.xa=function(){var e=H[this.g>>2];return H[this.g>>2]=e-1,R(0>2]=e},this.J=function(){return H[this.g>>2]},this.F=function(e){H[this.g+4>>2]=e},this.I=function(){return this.g+4},this.na=function(){return H[this.g+4>>2]},this.qa=function(){if(ur(this.M().C()))return H[this.J()>>2];var e=this.na();return 0!==e?e:this.J()},this.M=function(){return new ye(this.J())},void 0===e?(this.g=er(8),this.F(0)):this.g=e}var be=[],Me=0,Re=0;function me(e){try{return tr(new ye(e).g)}catch(e){T("exception during cxa_free_exception: "+e)}}function ve(e,t){for(var r=0,n=e.length-1;0<=n;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift("..");return e}function Se(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=ve(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e}function Ae(e){var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],e||t?(t&&(t=t.substr(0,t.length-1)),e+t):"."}function Fe(e){if("/"===e)return"/";var t=(e=(e=Se(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)}function Ie(){for(var e="",t=!1,r=arguments.length-1;-1<=r&&!t;r--){if("string"!=typeof(t=0<=r?arguments[r]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!t)return"";e=t+"/"+e,t="/"===t.charAt(0)}return(t?"/":"")+(e=ve(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."}var je=[];function Ue(e,t){je[e]={input:[],output:[],D:t},st(e,Ne)}var Ne={open:function(e){var t=je[e.node.rdev];if(!t)throw new Ve(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.D.flush(e.tty)},flush:function(e){e.tty.D.flush(e.tty)},read:function(e,t,r,n){if(!e.tty||!e.tty.D.ga)throw new Ve(60);for(var o=0,i=0;i=t||(t=Math.max(t,r*(1048576>r?2:1.125)>>>0),0!=r&&(t=Math.max(t,256)),r=e.h,e.h=new Uint8Array(t),0=e.node.l)return 0;if(R(0<=(e=Math.min(e.node.l-o,n))),8t)throw new Ve(28);return t},$:function(e,t,r){He.da(e.node,t+r),e.node.l=Math.max(e.node.l,t+r)},ia:function(e,t,r,n,o,i){if(0!==t)throw new Ve(28);if(32768!=(61440&e.node.mode))throw new Ve(43);if(e=e.node.h,2&i||e.buffer!==j){if((0>>0)%Ge.length}function Je(e,t){var r;if(r=(r=rt(e,"x"))?r:e.i.lookup?0:2)throw new Ve(r,e);for(r=Ge[Ke(e.id,t)];r;r=r.va){var n=r.name;if(r.parent.id===e.id&&n===t)return r}return e.i.lookup(e,t)}function $e(e,t,r,n){return R("object"==typeof e),t=Ke((e=new Zt(e,t,r,n)).parent.id,e.name),e.va=Ge[t],Ge[t]=e}var et={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090};function tt(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t}function rt(e,t){return Ye?0:!t.includes("r")||292&e.mode?t.includes("w")&&!(146&e.mode)||t.includes("x")&&!(73&e.mode)?2:0:2}function nt(e,t){try{return Je(e,t),20}catch(e){}return rt(e,"wx")}function ot(e,t){Tt||((Tt=function(){}).prototype={});var r,n=new Tt;for(r in e)n[r]=e[r];return e=n,t=function(e){for(e=e||0;e<=4096;e++)if(!We[e])return e;throw new Ve(33)}(t),e.fd=t,We[t]=e}var it,at={open:function(e){e.j=Le[e.node.rdev].j,e.j.open&&e.j.open(e)},B:function(){throw new Ve(70)}};function st(e,t){Le[e]={j:t}}function ct(e,t){if("string"==typeof e)throw e;var r="/"===t,n=!t;if(r&&Qe)throw new Ve(10);if(!r&&!n){var o=Ze(t,{fa:!1});if(t=o.path,(o=o.node).O)throw new Ve(10);if(16384!=(61440&o.mode))throw new Ve(54)}t={type:e,Ma:{},ja:t,ua:[]},(e=e.u(t)).u=t,t.root=e,r?Qe=e:o&&(o.O=t,o.u&&o.u.ua.push(t))}function dt(e,t,r){var n=Ze(e,{parent:!0}).node;if(!(e=Fe(e))||"."===e||".."===e)throw new Ve(28);var o=nt(n,e);if(o)throw new Ve(o);if(!n.i.N)throw new Ve(63);return n.i.N(n,e,t,r)}function ut(e){return dt(e,16895,0)}function pt(e,t,r){void 0===r&&(r=t,t=438),dt(e,8192|t,r)}function lt(e,t){if(!Ie(e))throw new Ve(44);var r=Ze(t,{parent:!0}).node;if(!r)throw new Ve(44);var n=nt(r,t=Fe(t));if(n)throw new Ve(n);if(!r.i.symlink)throw new Ve(63);r.i.symlink(r,t,e)}function Et(e){if(!(e=Ze(e).node))throw new Ve(44);if(!e.i.readlink)throw new Ve(28);return Ie(qe(e.parent),e.i.readlink(e))}function ft(e,t,n,o){if(""===e)throw new Ve(44);if("string"==typeof t){var i=et[t];if(void 0===i)throw Error("Unknown file open mode: "+t);t=i}if(n=64&t?4095&(void 0===n?438:n)|32768:0,"object"==typeof e)var a=e;else{e=Se(e);try{a=Ze(e,{ea:!(131072&t)}).node}catch(e){}}if(i=!1,64&t)if(a){if(128&t)throw new Ve(20)}else a=dt(e,n,0),i=!0;if(!a)throw new Ve(44);if(8192==(61440&a.mode)&&(t&=-513),65536&t&&16384!=(61440&a.mode))throw new Ve(54);if(!i&&(n=a?40960==(61440&a.mode)?32:16384==(61440&a.mode)&&("r"!==tt(t)||512&t)?31:rt(a,tt(t)):44))throw new Ve(n);if(512&t){if(!(n="string"==typeof(n=a)?Ze(n,{ea:!0}).node:n).i.s)throw new Ve(63);if(16384==(61440&n.mode))throw new Ve(31);if(32768!=(61440&n.mode))throw new Ve(28);if(i=rt(n,"w"))throw new Ve(i);n.i.s(n,{size:0,timestamp:Date.now()})}return t&=-131713,(o=ot({node:a,path:qe(a),flags:t,seekable:!0,position:0,j:a.j,Ha:[],error:!1},o)).j.open&&o.j.open(o),!r.logReadFiles||1&t||(wt||(wt={}),e in wt||(wt[e]=1)),o}function Ot(e,t,r){if(null===e.fd)throw new Ve(8);if(!e.seekable||!e.j.B)throw new Ve(70);if(0!=r&&1!=r&&2!=r)throw new Ve(28);e.position=e.j.B(e,t,r),e.Ha=[]}function ht(){Ve||((Ve=function(e,t){this.node=t,this.za=function(e){for(var t in this.A=e,Xe)if(Xe[t]===e){this.code=t;break}},this.za(e),this.message=Ce[e],this.stack&&(Object.defineProperty(this,"stack",{value:Error().stack,writable:!0}),this.stack=De(this.stack))}).prototype=Error(),Ve.prototype.constructor=Ve,[44].forEach((function(e){ze[e]=new Ve(e),ze[e].stack=""})))}function gt(e,t,r){e=Se("/dev/"+e);var n=function(e,t){var r=0;return e&&(r|=365),t&&(r|=146),r}(!!t,!!r);_t||(_t=64);var o=_t++<<8|0;st(o,{open:function(e){e.seekable=!1},close:function(){r&&r.buffer&&r.buffer.length&&r(10)},read:function(e,r,n,o){for(var i=0,a=0;a>2]}function bt(e){if(!(e=We[e]))throw new Ve(8);return e}function Mt(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Rt=void 0;function mt(e){for(var t="";N[e];)t+=Rt[N[e++]];return t}var vt={},St={},At={};function Ft(e){var t=Error,r=function(e,t){if(void 0===e)e="_unknown";else{var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);e=48<=r&&57>=r?"_"+e:e}return new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}(e,(function(t){this.name=e,this.message=t,void 0!==(t=Error(t).stack)&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var It=void 0;function jt(e){throw new It(e)}function Ut(e,t,r){if(r=r||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=t.name;if(e||jt('type "'+n+'" must have a positive integer typeid pointer'),St.hasOwnProperty(e)){if(r.ra)return;jt("Cannot register type '"+n+"' twice")}St[e]=t,delete At[e],vt.hasOwnProperty(e)&&(t=vt[e],delete vt[e],t.forEach((function(e){e()})))}var Nt=[],xt=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function kt(e){return this.fromWireType(C[e>>2])}function Ht(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Ct(e,t){switch(t){case 2:return function(e){return this.fromWireType(X[e>>2])};case 3:return function(e){return this.fromWireType(Q[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Xt(e,t,r){switch(t){case 0:return r?function(e){return U[e]}:function(e){return N[e]};case 1:return r?function(e){return x[e>>1]}:function(e){return k[e>>1]};case 2:return r?function(e){return H[e>>2]}:function(e){return C[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Qt,Lt={};function Wt(){if(!Qt){var e,t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:s||"./this.program"};for(e in Lt)void 0===Lt[e]?delete t[e]:t[e]=Lt[e];var r=[];for(e in t)r.push(e+"="+t[e]);Qt=r}return Qt}function Bt(e){return 0==e%4&&(0!=e%100||0==e%400)}function Gt(e,t){for(var r=0,n=0;n<=t;r+=e[n++]);return r}var Yt=[31,29,31,30,31,30,31,31,30,31,30,31],Vt=[31,28,31,30,31,30,31,31,30,31,30,31];function zt(e,t){for(e=new Date(e.getTime());0n-e.getDate())){e.setDate(e.getDate()+t);break}t-=n-e.getDate()+1,e.setDate(1),11>r?e.setMonth(r+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return e}function Zt(e,t,r,n){e||(e=this),this.parent=e,this.u=e.u,this.O=null,this.id=Be++,this.name=t,this.mode=r,this.i={},this.j={},this.rdev=n}Object.defineProperties(Zt.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}}}),ht(),Ge=Array(4096),ct(He,"/"),ut("/tmp"),ut("/home"),ut("/home/web_user"),function(){ut("/dev"),st(259,{read:function(){return 0},write:function(e,t,r,n){return n}}),pt("/dev/null",259),Ue(1280,xe),Ue(1536,ke),pt("/dev/tty",1280),pt("/dev/tty1",1536);var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var t=require("crypto");return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){Oe("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();gt("random",e),gt("urandom",e),ut("/dev/shm"),ut("/dev/shm/tmp")}(),function(){ut("/proc");var e=ut("/proc/self");ut("/proc/self/fd"),ct({u:function(){var t=$e(e,"fd",16895,73);return t.i={lookup:function(e,t){var r=We[+t];if(!r)throw new Ve(8);return(e={parent:null,u:{ja:"fake"},i:{readlink:function(){return r.path}}}).parent=e}},t}},"/proc/self/fd")}(),Xe={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};for(var qt=Array(256),Kt=0;256>Kt;++Kt)qt[Kt]=String.fromCharCode(Kt);function Jt(e,t){var r=Array(I(e)+1);return e=A(e,r,0,r.length),t&&(r.length=e),r}Rt=qt,It=r.BindingError=Ft("BindingError"),r.InternalError=Ft("InternalError"),r.count_emval_handles=function(){for(var e=0,t=5;to?-28:ft(n.path,n.flags,0,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:return o=Pt(),n.flags|=o,0;case 12:return o=Pt(),x[o+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return H[nr()>>2]=28,-1;default:return-28}}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},__sys_ioctl:function(e,t,r){yt=r;try{var n=bt(e);switch(t){case 21509:case 21505:return n.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=Pt();return H[o>>2]=0;case 21520:return n.tty?-28:-59;case 21531:if(e=o=Pt(),!n.j.ta)throw new Ve(59);return n.j.ta(n,t,e);case 21523:case 21524:return n.tty?0:-59;default:Oe("bad ioctl syscall "+t)}}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},__sys_open:function(e,t,r){yt=r;try{return ft(S(e),t,r?Pt():0).fd}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),-e.A}},_embind_register_bigint:function(){},_embind_register_bool:function(e,t,r,n,o){var i=Mt(r);Ut(e,{name:t=mt(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:o},argPackAdvance:8,readValueFromPointer:function(e){if(1===r)var n=U;else if(2===r)n=x;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);n=H}return this.fromWireType(n[e>>i])},H:null})},_embind_register_emval:function(e,t){Ut(e,{name:t=mt(t),fromWireType:function(e){var t=xt[e].value;return 4>>s}}var c=t.includes("unsigned");Ut(e,{name:t,fromWireType:i,toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Ht(r)+'" to '+this.name);if(ro)throw new TypeError('Passing a number "'+Ht(r)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+n+", "+o+"]!");return c?r>>>0:0|r},argPackAdvance:8,readValueFromPointer:Xt(t,a,0!==n),H:null})},_embind_register_memory_view:function(e,t,r){function n(e){var t=C;return new o(j,t[(e>>=2)+1],t[e])}var o=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];Ut(e,{name:r=mt(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ra:!0})},_embind_register_std_string:function(e,t){var r="std::string"===(t=mt(t));Ut(e,{name:t,fromWireType:function(e){var t=C[e>>2];if(r)for(var n=e+4,o=0;o<=t;++o){var i=e+4+o;if(o==t||0==N[i]){if(n=S(n,i-n),void 0===a)var a=n;else a+=String.fromCharCode(0),a+=n;n=i+1}}else{for(a=Array(t),o=0;o>2]=o,r&&n)F(t,i+4,o+1);else if(n)for(n=0;n>2],i=a(),c=e+4,d=0;d<=o;++d){var u=e+4+d*t;d!=o&&0!=i[u>>s]||(c=n(c,u-c),void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),c=u+t)}return tr(e),r},toWireType:function(e,n){"string"!=typeof n&&jt("Cannot pass non-string to C++ string type "+r);var a=i(n),c=er(4+a+t);return C[c>>2]=a>>s,o(n,c+4,a+t),null!==e&&e.push(tr,c),c},argPackAdvance:8,readValueFromPointer:kt,H:function(e){tr(e)}})},_embind_register_void:function(e,t){Ut(e,{La:!0,name:t=mt(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},abort:function(){Oe()},emscripten_memcpy_big:function(e,t,r){N.copyWithin(e,t,t+r)},emscripten_resize_heap:function(e){var t=N.length;if(R((e>>>=0)>t),2147483648=r;r*=2){var n=t*(1+.2/r);n=Math.min(n,e+100663296),0<(n=Math.max(e,n))%65536&&(n+=65536-n%65536);e:{var o=n=Math.min(2147483648,n);try{b.grow(o-j.byteLength+65535>>>16),q();var i=1;break e}catch(e){T("emscripten_realloc_buffer: Attempted to grow heap from "+j.byteLength+" bytes to "+o+" bytes, but got error: "+e)}i=void 0}if(i)return!0}return T("Failed to grow the heap from "+t+" bytes to "+n+" bytes, not enough memory!"),!1},environ_get:function(e,t){var r=0;return Wt().forEach((function(n,o){var i=t+r;for(o=H[e+4*o>>2]=i,i=0;i>0]=n.charCodeAt(i);U[o>>0]=0,r+=n.length+1})),0},environ_sizes_get:function(e,t){var r=Wt();H[e>>2]=r.length;var n=0;return r.forEach((function(e){n+=e.length+1})),H[t>>2]=n,0},fd_close:function(e){try{var t=bt(e);if(null===t.fd)throw new Ve(8);t.V&&(t.V=null);try{t.j.close&&t.j.close(t)}catch(e){throw e}finally{We[t.fd]=null}return t.fd=null,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_read:function(e,t,r,n){try{e:{for(var o=bt(e),i=e=0;i>2],s=o,c=H[t+8*i>>2],d=a,u=void 0,p=U;if(0>d||0>u)throw new Ve(28);if(null===s.fd)throw new Ve(8);if(1==(2097155&s.flags))throw new Ve(8);if(16384==(61440&s.node.mode))throw new Ve(31);if(!s.j.read)throw new Ve(28);var l=void 0!==u;if(l){if(!s.seekable)throw new Ve(70)}else u=s.position;var E=s.j.read(s,p,c,d,u);l||(s.position+=E);var f=E;if(0>f){var O=-1;break e}if(e+=f,f>2]=O,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_seek:function(e,t,r,n,o){try{var i=bt(e);return-9007199254740992>=(e=4294967296*r+(t>>>0))||9007199254740992<=e?-61:(Ot(i,e,n),ue=[i.position>>>0,(de=i.position,1<=+Math.abs(de)?0>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],H[o>>2]=ue[0],H[o+4>>2]=ue[1],i.V&&0===e&&0===n&&(i.V=null),0)}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},fd_write:function(e,t,r,n){try{e:{for(var o=bt(e),i=e=0;i>2],c=H[t+(8*i+4)>>2],d=void 0,u=U;if(0>c||0>d)throw new Ve(28);if(null===a.fd)throw new Ve(8);if(0==(2097155&a.flags))throw new Ve(8);if(16384==(61440&a.node.mode))throw new Ve(31);if(!a.j.write)throw new Ve(28);a.seekable&&1024&a.flags&&Ot(a,0,2);var p=void 0!==d;if(p){if(!a.seekable)throw new Ve(70)}else d=a.position;var l=a.j.write(a,u,s,c,d,void 0);p||(a.position+=l);var E=l;if(0>E){var f=-1;break e}e+=E}f=e}return H[n>>2]=f,0}catch(e){return void 0!==Dt&&e instanceof Ve||Oe(e),e.A}},getTempRet0:function(){return P},invoke_ddd:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_diii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fii:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiii:function(e,t,r,n,o){var i=or();try{return K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d){var u=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d)}catch(e){if(ir(u),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_fiiiiiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l,E,f,O,h){var g=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l,E,f,O,h)}catch(e){if(ir(g),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_i:function(e){var t=or();try{return K.get(e)()}catch(e){if(ir(t),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_id:function(e,t){var r=or();try{return K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_ii:function(e,t){var r=or();try{return K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iif:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iii:function(e,t,r){var n=or();try{return K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiii:function(e,t,r,n){var o=or();try{return K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiidi:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiii:function(e,t,r,n,o){var i=or();try{return K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiid:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiii:function(e,t,r,n,o,i){var a=or();try{return K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiii:function(e,t,r,n,o,i,a){var s=or();try{return K.get(e)(t,r,n,o,i,a)}catch(e){if(ir(s),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiii:function(e,t,r,n,o,i,a,s){var c=or();try{return K.get(e)(t,r,n,o,i,a,s)}catch(e){if(ir(c),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p){var l=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p)}catch(e){if(ir(l),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_iiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l){var E=or();try{return K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l)}catch(e){if(ir(E),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_jiiii:function(e,t,r,n,o){var i=or();try{return lr(e,t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_v:function(e){var t=or();try{K.get(e)()}catch(e){if(ir(t),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vi:function(e,t){var r=or();try{K.get(e)(t)}catch(e){if(ir(r),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vid:function(e,t,r){var n=or();try{K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_vii:function(e,t,r){var n=or();try{K.get(e)(t,r)}catch(e){if(ir(n),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viid:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viif:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viii:function(e,t,r,n){var o=or();try{K.get(e)(t,r,n)}catch(e){if(ir(o),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiii:function(e,t,r,n,o){var i=or();try{K.get(e)(t,r,n,o)}catch(e){if(ir(i),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiii:function(e,t,r,n,o,i){var a=or();try{K.get(e)(t,r,n,o,i)}catch(e){if(ir(a),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiii:function(e,t,r,n,o,i,a){var s=or();try{K.get(e)(t,r,n,o,i,a)}catch(e){if(ir(s),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiii:function(e,t,r,n,o,i,a,s){var c=or();try{K.get(e)(t,r,n,o,i,a,s)}catch(e){if(ir(c),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiii:function(e,t,r,n,o,i,a,s,c,d){var u=or();try{K.get(e)(t,r,n,o,i,a,s,c,d)}catch(e){if(ir(u),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u){var p=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u)}catch(e){if(ir(p),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p){var l=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u,p)}catch(e){if(ir(l),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},invoke_viiiiiiiiiiiiiii:function(e,t,r,n,o,i,a,s,c,d,u,p,l,E,f,O){var h=or();try{K.get(e)(t,r,n,o,i,a,s,c,d,u,p,l,E,f,O)}catch(e){if(ir(h),e!==e+0&&"longjmp"!==e)throw e;cr(1,0)}},llvm_eh_typeid_for:function(e){return e},setTempRet0:function(e){P=e},strftime_l:function(e,t,r,n){return function(e,t,r,n){function o(e,t,r){for(e="number"==typeof e?e.toString():e||"";e.lengthe?-1:0=a(r,e)?0>=a(t,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var d=H[n+40>>2];for(var u in n={Fa:H[n>>2],Ea:H[n+4>>2],P:H[n+8>>2],L:H[n+12>>2],G:H[n+16>>2],m:H[n+20>>2],R:H[n+24>>2],S:H[n+28>>2],Na:H[n+32>>2],Da:H[n+36>>2],Ga:d?S(d):""},r=S(r),d={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"})r=r.replace(new RegExp(u,"g"),d[u]);var p="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),l="January February March April May June July August September October November December".split(" ");for(u in d={"%a":function(e){return p[e.R].substring(0,3)},"%A":function(e){return p[e.R]},"%b":function(e){return l[e.G].substring(0,3)},"%B":function(e){return l[e.G]},"%C":function(e){return i((e.m+1900)/100|0,2)},"%d":function(e){return i(e.L,2)},"%e":function(e){return o(e.L,2," ")},"%g":function(e){return c(e).toString().substring(2)},"%G":function(e){return c(e)},"%H":function(e){return i(e.P,2)},"%I":function(e){return 0==(e=e.P)?e=12:12e.P?"AM":"PM"},"%S":function(e){return i(e.Fa,2)},"%t":function(){return"\t"},"%u":function(e){return e.R||7},"%U":function(e){var t=new Date(e.m+1900,0,1),r=0===t.getDay()?t:zt(t,7-t.getDay());return 0>a(r,e=new Date(e.m+1900,e.G,e.L))?i(Math.ceil((31-r.getDate()+(Gt(Bt(e.getFullYear())?Yt:Vt,e.getMonth()-1)-31)+e.getDate())/7),2):0===a(r,t)?"01":"00"},"%V":function(e){var t=new Date(e.m+1901,0,4),r=s(new Date(e.m+1900,0,4));t=s(t);var n=zt(new Date(e.m+1900,0,1),e.S);return 0>a(n,r)?"53":0>=a(t,n)?"01":i(Math.ceil((r.getFullYear()a(r,e=new Date(e.m+1900,e.G,e.L))?i(Math.ceil((31-r.getDate()+(Gt(Bt(e.getFullYear())?Yt:Vt,e.getMonth()-1)-31)+e.getDate())/7),2):0===a(r,t)?"01":"00"},"%y":function(e){return(e.m+1900).toString().substring(2)},"%Y":function(e){return e.m+1900},"%z":function(e){var t=0<=(e=e.Da);return e=Math.abs(e)/60,(t?"+":"-")+String("0000"+(e/60*100+e%60)).slice(-4)},"%Z":function(e){return e.Ga},"%%":function(){return"%"}})r.includes(u)&&(r=r.replace(new RegExp(u,"g"),d[u](n)));return(u=Jt(r,!1)).length>t?0:(Z(u,e),u.length-1)}(e,t,r,n)}};!function(){function e(e){r.asm=e.exports,R(b=r.asm.memory,"memory not found in wasm exports"),q(),R(K=r.asm.__indirect_function_table,"table not found in wasm exports"),oe.unshift(r.asm.__wasm_call_ctors),pe--,r.monitorRunDependencies&&r.monitorRunDependencies(pe),R(fe["wasm-instantiate"]),delete fe["wasm-instantiate"],0==pe&&(null!==le&&(clearInterval(le),le=null),Ee&&(e=Ee,Ee=null,e()))}function t(t){R(r===a,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),a=null,e(t.instance)}function n(e){return function(){if(!y&&(c||d)){if("function"==typeof fetch&&!ce.startsWith("file://"))return fetch(ce,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ce+"'";return e.arrayBuffer()})).catch((function(){return Te()}));if(E)return new Promise((function(e,t){E(ce,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Te()}))}().then((function(e){return WebAssembly.instantiate(e,i)})).then((function(e){return e})).then(e,(function(e){T("failed to asynchronously prepare wasm: "+e),ce.startsWith("file://")&&T("warning: Loading from a file URI ("+ce+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),Oe(e)}))}var i={env:$t,wasi_snapshot_preview1:$t};pe++,r.monitorRunDependencies&&r.monitorRunDependencies(pe),R(!fe["wasm-instantiate"]),fe["wasm-instantiate"]=1,null===le&&"undefined"!=typeof setInterval&&(le=setInterval((function(){if(M)clearInterval(le),le=null;else{var e,t=!1;for(e in fe)t||(t=!0,T("still waiting on run dependencies:")),T("dependency: "+e);t&&T("(end of list)")}}),1e4));var a=r;if(r.instantiateWasm)try{return r.instantiateWasm(i,e)}catch(e){return T("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||he()||ce.startsWith("file://")||"function"!=typeof fetch?n(t):fetch(ce,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,i).then(t,(function(e){return T("wasm streaming compile failed: "+e),T("falling back to ArrayBuffer instantiation"),n(t)}))}))).catch(o)}(),r.___wasm_call_ctors=ge("__wasm_call_ctors"),r._acuantMetrics=ge("acuantMetrics"),r._acuantMoire=ge("acuantMoire");var er=r._malloc=ge("malloc"),tr=r._free=ge("free");r._fflush=ge("fflush"),r.___getTypeName=ge("__getTypeName"),r.___embind_register_native_and_builtin_types=ge("__embind_register_native_and_builtin_types");var rr=r._emscripten_stack_get_end=function(){return(rr=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)},nr=r.___errno_location=ge("__errno_location"),or=r.stackSave=ge("stackSave"),ir=r.stackRestore=ge("stackRestore"),ar=r.stackAlloc=ge("stackAlloc"),sr=r._emscripten_stack_init=function(){return(sr=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)};var cr=r._setThrew=ge("setThrew"),dr=r.___cxa_can_catch=ge("__cxa_can_catch"),ur=r.___cxa_is_pointer_type=ge("__cxa_is_pointer_type");r.dynCall_jiji=ge("dynCall_jiji");var pr,lr=r.dynCall_jiiii=ge("dynCall_jiiii");function Er(){function e(){if(!pr&&(pr=!0,r.calledRun=!0,!M)){if(ee(),R(!ae),ae=!0,!r.noFSInit&&!it){R(!it,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),it=!0,ht(),r.stdin=r.stdin,r.stdout=r.stdout,r.stderr=r.stderr,r.stdin?gt("stdin",r.stdin):lt("/dev/tty","/dev/stdin"),r.stdout?gt("stdout",null,r.stdout):lt("/dev/tty","/dev/stdout"),r.stderr?gt("stderr",null,r.stderr):lt("/dev/tty1","/dev/stderr");var e=ft("/dev/stdin",0),t=ft("/dev/stdout",1),o=ft("/dev/stderr",1);R(0===e.fd,"invalid handle for stdin ("+e.fd+")"),R(1===t.fd,"invalid handle for stdout ("+t.fd+")"),R(2===o.fd,"invalid handle for stderr ("+o.fd+")")}if(Ye=!1,we(oe),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),R(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),ee(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),ie.unshift(e);we(ie)}}if(!(0>0];case"i16":return x[e>>1];case"i32":case"i64":return H[e>>2];case"float":return X[e>>2];case"double":return Q[e>>3];default:Oe("invalid type for getValue: "+t)}return null},Object.getOwnPropertyDescriptor(r,"allocate")||(r.allocate=function(){Oe("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF8ArrayToString")||(r.UTF8ArrayToString=function(){Oe("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF8ToString")||(r.UTF8ToString=function(){Oe("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF8Array")||(r.stringToUTF8Array=function(){Oe("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF8")||(r.stringToUTF8=function(){Oe("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF8")||(r.lengthBytesUTF8=function(){Oe("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackTrace")||(r.stackTrace=function(){Oe("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPreRun")||(r.addOnPreRun=function(){Oe("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnInit")||(r.addOnInit=function(){Oe("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPreMain")||(r.addOnPreMain=function(){Oe("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnExit")||(r.addOnExit=function(){Oe("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addOnPostRun")||(r.addOnPostRun=function(){Oe("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeStringToMemory")||(r.writeStringToMemory=function(){Oe("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeArrayToMemory")||(r.writeArrayToMemory=function(){Oe("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeAsciiToMemory")||(r.writeAsciiToMemory=function(){Oe("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addRunDependency")||(r.addRunDependency=function(){Oe("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"removeRunDependency")||(r.removeRunDependency=function(){Oe("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createFolder")||(r.FS_createFolder=function(){Oe("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS_createPath")||(r.FS_createPath=function(){Oe("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createDataFile")||(r.FS_createDataFile=function(){Oe("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createPreloadedFile")||(r.FS_createPreloadedFile=function(){Oe("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createLazyFile")||(r.FS_createLazyFile=function(){Oe("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_createLink")||(r.FS_createLink=function(){Oe("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS_createDevice")||(r.FS_createDevice=function(){Oe("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"FS_unlink")||(r.FS_unlink=function(){Oe("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(r,"getLEB")||(r.getLEB=function(){Oe("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFunctionTables")||(r.getFunctionTables=function(){Oe("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"alignFunctionTables")||(r.alignFunctionTables=function(){Oe("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFunctions")||(r.registerFunctions=function(){Oe("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"addFunction")||(r.addFunction=function(){Oe("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"removeFunction")||(r.removeFunction=function(){Oe("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFuncWrapper")||(r.getFuncWrapper=function(){Oe("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"prettyPrint")||(r.prettyPrint=function(){Oe("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCall")||(r.dynCall=function(){Oe("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getCompilerSetting")||(r.getCompilerSetting=function(){Oe("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"print")||(r.print=function(){Oe("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"printErr")||(r.printErr=function(){Oe("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getTempRet0")||(r.getTempRet0=function(){Oe("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setTempRet0")||(r.setTempRet0=function(){Oe("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callMain")||(r.callMain=function(){Oe("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"abort")||(r.abort=function(){Oe("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"keepRuntimeAlive")||(r.keepRuntimeAlive=function(){Oe("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"zeroMemory")||(r.zeroMemory=function(){Oe("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToNewUTF8")||(r.stringToNewUTF8=function(){Oe("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setFileTime")||(r.setFileTime=function(){Oe("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscripten_realloc_buffer")||(r.emscripten_realloc_buffer=function(){Oe("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ENV")||(r.ENV=function(){Oe("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ERRNO_CODES")||(r.ERRNO_CODES=function(){Oe("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ERRNO_MESSAGES")||(r.ERRNO_MESSAGES=function(){Oe("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setErrNo")||(r.setErrNo=function(){Oe("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetPton4")||(r.inetPton4=function(){Oe("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetNtop4")||(r.inetNtop4=function(){Oe("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetPton6")||(r.inetPton6=function(){Oe("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"inetNtop6")||(r.inetNtop6=function(){Oe("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readSockaddr")||(r.readSockaddr=function(){Oe("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeSockaddr")||(r.writeSockaddr=function(){Oe("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"DNS")||(r.DNS=function(){Oe("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getHostByName")||(r.getHostByName=function(){Oe("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GAI_ERRNO_MESSAGES")||(r.GAI_ERRNO_MESSAGES=function(){Oe("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Protocols")||(r.Protocols=function(){Oe("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Sockets")||(r.Sockets=function(){Oe("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getRandomDevice")||(r.getRandomDevice=function(){Oe("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"traverseStack")||(r.traverseStack=function(){Oe("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UNWIND_CACHE")||(r.UNWIND_CACHE=function(){Oe("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"withBuiltinMalloc")||(r.withBuiltinMalloc=function(){Oe("'withBuiltinMalloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readAsmConstArgsArray")||(r.readAsmConstArgsArray=function(){Oe("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readAsmConstArgs")||(r.readAsmConstArgs=function(){Oe("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"mainThreadEM_ASM")||(r.mainThreadEM_ASM=function(){Oe("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jstoi_q")||(r.jstoi_q=function(){Oe("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jstoi_s")||(r.jstoi_s=function(){Oe("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getExecutableName")||(r.getExecutableName=function(){Oe("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"listenOnce")||(r.listenOnce=function(){Oe("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"autoResumeAudioContext")||(r.autoResumeAudioContext=function(){Oe("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCallLegacy")||(r.dynCallLegacy=function(){Oe("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getDynCaller")||(r.getDynCaller=function(){Oe("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"dynCall")||(r.dynCall=function(){Oe("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callRuntimeCallbacks")||(r.callRuntimeCallbacks=function(){Oe("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"handleException")||(r.handleException=function(){Oe("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runtimeKeepalivePush")||(r.runtimeKeepalivePush=function(){Oe("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runtimeKeepalivePop")||(r.runtimeKeepalivePop=function(){Oe("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"callUserCallback")||(r.callUserCallback=function(){Oe("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"maybeExit")||(r.maybeExit=function(){Oe("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"safeSetTimeout")||(r.safeSetTimeout=function(){Oe("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"asmjsMangle")||(r.asmjsMangle=function(){Oe("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"asyncLoad")||(r.asyncLoad=function(){Oe("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"alignMemory")||(r.alignMemory=function(){Oe("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"mmapAlloc")||(r.mmapAlloc=function(){Oe("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"reallyNegative")||(r.reallyNegative=function(){Oe("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"unSign")||(r.unSign=function(){Oe("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"reSign")||(r.reSign=function(){Oe("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"formatString")||(r.formatString=function(){Oe("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PATH")||(r.PATH=function(){Oe("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PATH_FS")||(r.PATH_FS=function(){Oe("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SYSCALLS")||(r.SYSCALLS=function(){Oe("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"syscallMmap2")||(r.syscallMmap2=function(){Oe("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"syscallMunmap")||(r.syscallMunmap=function(){Oe("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getSocketFromFD")||(r.getSocketFromFD=function(){Oe("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getSocketAddress")||(r.getSocketAddress=function(){Oe("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"JSEvents")||(r.JSEvents=function(){Oe("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerKeyEventCallback")||(r.registerKeyEventCallback=function(){Oe("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"specialHTMLTargets")||(r.specialHTMLTargets=function(){Oe("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"maybeCStringToJsString")||(r.maybeCStringToJsString=function(){Oe("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"findEventTarget")||(r.findEventTarget=function(){Oe("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"findCanvasEventTarget")||(r.findCanvasEventTarget=function(){Oe("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getBoundingClientRect")||(r.getBoundingClientRect=function(){Oe("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillMouseEventData")||(r.fillMouseEventData=function(){Oe("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerMouseEventCallback")||(r.registerMouseEventCallback=function(){Oe("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerWheelEventCallback")||(r.registerWheelEventCallback=function(){Oe("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerUiEventCallback")||(r.registerUiEventCallback=function(){Oe("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFocusEventCallback")||(r.registerFocusEventCallback=function(){Oe("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillDeviceOrientationEventData")||(r.fillDeviceOrientationEventData=function(){Oe("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerDeviceOrientationEventCallback")||(r.registerDeviceOrientationEventCallback=function(){Oe("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillDeviceMotionEventData")||(r.fillDeviceMotionEventData=function(){Oe("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerDeviceMotionEventCallback")||(r.registerDeviceMotionEventCallback=function(){Oe("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"screenOrientation")||(r.screenOrientation=function(){Oe("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillOrientationChangeEventData")||(r.fillOrientationChangeEventData=function(){Oe("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerOrientationChangeEventCallback")||(r.registerOrientationChangeEventCallback=function(){Oe("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillFullscreenChangeEventData")||(r.fillFullscreenChangeEventData=function(){Oe("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerFullscreenChangeEventCallback")||(r.registerFullscreenChangeEventCallback=function(){Oe("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerRestoreOldStyle")||(r.registerRestoreOldStyle=function(){Oe("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"hideEverythingExceptGivenElement")||(r.hideEverythingExceptGivenElement=function(){Oe("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"restoreHiddenElements")||(r.restoreHiddenElements=function(){Oe("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setLetterbox")||(r.setLetterbox=function(){Oe("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"currentFullscreenStrategy")||(r.currentFullscreenStrategy=function(){Oe("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"restoreOldWindowedStyle")||(r.restoreOldWindowedStyle=function(){Oe("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"softFullscreenResizeWebGLRenderTarget")||(r.softFullscreenResizeWebGLRenderTarget=function(){Oe("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"doRequestFullscreen")||(r.doRequestFullscreen=function(){Oe("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillPointerlockChangeEventData")||(r.fillPointerlockChangeEventData=function(){Oe("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerPointerlockChangeEventCallback")||(r.registerPointerlockChangeEventCallback=function(){Oe("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerPointerlockErrorEventCallback")||(r.registerPointerlockErrorEventCallback=function(){Oe("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requestPointerLock")||(r.requestPointerLock=function(){Oe("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillVisibilityChangeEventData")||(r.fillVisibilityChangeEventData=function(){Oe("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerVisibilityChangeEventCallback")||(r.registerVisibilityChangeEventCallback=function(){Oe("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerTouchEventCallback")||(r.registerTouchEventCallback=function(){Oe("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillGamepadEventData")||(r.fillGamepadEventData=function(){Oe("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerGamepadEventCallback")||(r.registerGamepadEventCallback=function(){Oe("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerBeforeUnloadEventCallback")||(r.registerBeforeUnloadEventCallback=function(){Oe("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"fillBatteryEventData")||(r.fillBatteryEventData=function(){Oe("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"battery")||(r.battery=function(){Oe("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerBatteryEventCallback")||(r.registerBatteryEventCallback=function(){Oe("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setCanvasElementSize")||(r.setCanvasElementSize=function(){Oe("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getCanvasElementSize")||(r.getCanvasElementSize=function(){Oe("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"polyfillSetImmediate")||(r.polyfillSetImmediate=function(){Oe("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"demangle")||(r.demangle=function(){Oe("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"demangleAll")||(r.demangleAll=function(){Oe("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"jsStackTrace")||(r.jsStackTrace=function(){Oe("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackTrace")||(r.stackTrace=function(){Oe("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getEnvStrings")||(r.getEnvStrings=function(){Oe("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"checkWasiClock")||(r.checkWasiClock=function(){Oe("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64")||(r.writeI53ToI64=function(){Oe("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64Clamped")||(r.writeI53ToI64Clamped=function(){Oe("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToI64Signaling")||(r.writeI53ToI64Signaling=function(){Oe("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToU64Clamped")||(r.writeI53ToU64Clamped=function(){Oe("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeI53ToU64Signaling")||(r.writeI53ToU64Signaling=function(){Oe("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readI53FromI64")||(r.readI53FromI64=function(){Oe("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readI53FromU64")||(r.readI53FromU64=function(){Oe("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"convertI32PairToI53")||(r.convertI32PairToI53=function(){Oe("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"convertU32PairToI53")||(r.convertU32PairToI53=function(){Oe("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"uncaughtExceptionCount")||(r.uncaughtExceptionCount=function(){Oe("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exceptionLast")||(r.exceptionLast=function(){Oe("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exceptionCaught")||(r.exceptionCaught=function(){Oe("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ExceptionInfo")||(r.ExceptionInfo=function(){Oe("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"CatchInfo")||(r.CatchInfo=function(){Oe("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exception_addRef")||(r.exception_addRef=function(){Oe("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exception_decRef")||(r.exception_decRef=function(){Oe("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"Browser")||(r.Browser=function(){Oe("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"funcWrappers")||(r.funcWrappers=function(){Oe("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getFuncWrapper")||(r.getFuncWrapper=function(){Oe("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setMainLoop")||(r.setMainLoop=function(){Oe("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"wget")||(r.wget=function(){Oe("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"FS")||(r.FS=function(){Oe("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"MEMFS")||(r.MEMFS=function(){Oe("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"TTY")||(r.TTY=function(){Oe("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PIPEFS")||(r.PIPEFS=function(){Oe("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SOCKFS")||(r.SOCKFS=function(){Oe("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"_setNetworkCallback")||(r._setNetworkCallback=function(){Oe("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"tempFixedLengthArray")||(r.tempFixedLengthArray=function(){Oe("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"miniTempWebGLFloatBuffers")||(r.miniTempWebGLFloatBuffers=function(){Oe("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heapObjectForWebGLType")||(r.heapObjectForWebGLType=function(){Oe("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heapAccessShiftForWebGLHeap")||(r.heapAccessShiftForWebGLHeap=function(){Oe("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GL")||(r.GL=function(){Oe("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGet")||(r.emscriptenWebGLGet=function(){Oe("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"computeUnpackAlignedImageSize")||(r.computeUnpackAlignedImageSize=function(){Oe("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetTexPixelData")||(r.emscriptenWebGLGetTexPixelData=function(){Oe("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetUniform")||(r.emscriptenWebGLGetUniform=function(){Oe("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglGetUniformLocation")||(r.webglGetUniformLocation=function(){Oe("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglPrepareUniformLocationsBeforeFirstUse")||(r.webglPrepareUniformLocationsBeforeFirstUse=function(){Oe("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"webglGetLeftBracePos")||(r.webglGetLeftBracePos=function(){Oe("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emscriptenWebGLGetVertexAttrib")||(r.emscriptenWebGLGetVertexAttrib=function(){Oe("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"writeGLArray")||(r.writeGLArray=function(){Oe("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"AL")||(r.AL=function(){Oe("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_unicode")||(r.SDL_unicode=function(){Oe("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_ttfContext")||(r.SDL_ttfContext=function(){Oe("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_audio")||(r.SDL_audio=function(){Oe("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL")||(r.SDL=function(){Oe("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"SDL_gfx")||(r.SDL_gfx=function(){Oe("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLUT")||(r.GLUT=function(){Oe("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"EGL")||(r.EGL=function(){Oe("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLFW_Window")||(r.GLFW_Window=function(){Oe("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLFW")||(r.GLFW=function(){Oe("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"GLEW")||(r.GLEW=function(){Oe("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"IDBStore")||(r.IDBStore=function(){Oe("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runAndAbortIfError")||(r.runAndAbortIfError=function(){Oe("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_handle_array")||(r.emval_handle_array=function(){Oe("'emval_handle_array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_free_list")||(r.emval_free_list=function(){Oe("'emval_free_list' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_symbols")||(r.emval_symbols=function(){Oe("'emval_symbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_emval")||(r.init_emval=function(){Oe("'init_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"count_emval_handles")||(r.count_emval_handles=function(){Oe("'count_emval_handles' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"get_first_emval")||(r.get_first_emval=function(){Oe("'get_first_emval' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getStringOrSymbol")||(r.getStringOrSymbol=function(){Oe("'getStringOrSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requireHandle")||(r.requireHandle=function(){Oe("'requireHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_newers")||(r.emval_newers=function(){Oe("'emval_newers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"craftEmvalAllocator")||(r.craftEmvalAllocator=function(){Oe("'craftEmvalAllocator' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_get_global")||(r.emval_get_global=function(){Oe("'emval_get_global' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"emval_methodCallers")||(r.emval_methodCallers=function(){Oe("'emval_methodCallers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"InternalError")||(r.InternalError=function(){Oe("'InternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"BindingError")||(r.BindingError=function(){Oe("'BindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UnboundTypeError")||(r.UnboundTypeError=function(){Oe("'UnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"PureVirtualError")||(r.PureVirtualError=function(){Oe("'PureVirtualError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_embind")||(r.init_embind=function(){Oe("'init_embind' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwInternalError")||(r.throwInternalError=function(){Oe("'throwInternalError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwBindingError")||(r.throwBindingError=function(){Oe("'throwBindingError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwUnboundTypeError")||(r.throwUnboundTypeError=function(){Oe("'throwUnboundTypeError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ensureOverloadTable")||(r.ensureOverloadTable=function(){Oe("'ensureOverloadTable' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"exposePublicSymbol")||(r.exposePublicSymbol=function(){Oe("'exposePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"replacePublicSymbol")||(r.replacePublicSymbol=function(){Oe("'replacePublicSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"extendError")||(r.extendError=function(){Oe("'extendError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"createNamedFunction")||(r.createNamedFunction=function(){Oe("'createNamedFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredInstances")||(r.registeredInstances=function(){Oe("'registeredInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getBasestPointer")||(r.getBasestPointer=function(){Oe("'getBasestPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerInheritedInstance")||(r.registerInheritedInstance=function(){Oe("'registerInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"unregisterInheritedInstance")||(r.unregisterInheritedInstance=function(){Oe("'unregisterInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getInheritedInstance")||(r.getInheritedInstance=function(){Oe("'getInheritedInstance' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getInheritedInstanceCount")||(r.getInheritedInstanceCount=function(){Oe("'getInheritedInstanceCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getLiveInheritedInstances")||(r.getLiveInheritedInstances=function(){Oe("'getLiveInheritedInstances' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredTypes")||(r.registeredTypes=function(){Oe("'registeredTypes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"awaitingDependencies")||(r.awaitingDependencies=function(){Oe("'awaitingDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"typeDependencies")||(r.typeDependencies=function(){Oe("'typeDependencies' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registeredPointers")||(r.registeredPointers=function(){Oe("'registeredPointers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"registerType")||(r.registerType=function(){Oe("'registerType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"whenDependentTypesAreResolved")||(r.whenDependentTypesAreResolved=function(){Oe("'whenDependentTypesAreResolved' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind_charCodes")||(r.embind_charCodes=function(){Oe("'embind_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind_init_charCodes")||(r.embind_init_charCodes=function(){Oe("'embind_init_charCodes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"readLatin1String")||(r.readLatin1String=function(){Oe("'readLatin1String' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getTypeName")||(r.getTypeName=function(){Oe("'getTypeName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"heap32VectorToArray")||(r.heap32VectorToArray=function(){Oe("'heap32VectorToArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"requireRegisteredType")||(r.requireRegisteredType=function(){Oe("'requireRegisteredType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"getShiftFromSize")||(r.getShiftFromSize=function(){Oe("'getShiftFromSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"integerReadValueFromPointer")||(r.integerReadValueFromPointer=function(){Oe("'integerReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"enumReadValueFromPointer")||(r.enumReadValueFromPointer=function(){Oe("'enumReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"floatReadValueFromPointer")||(r.floatReadValueFromPointer=function(){Oe("'floatReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"simpleReadValueFromPointer")||(r.simpleReadValueFromPointer=function(){Oe("'simpleReadValueFromPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runDestructors")||(r.runDestructors=function(){Oe("'runDestructors' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"new_")||(r.new_=function(){Oe("'new_' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"craftInvokerFunction")||(r.craftInvokerFunction=function(){Oe("'craftInvokerFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"embind__requireFunction")||(r.embind__requireFunction=function(){Oe("'embind__requireFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"tupleRegistrations")||(r.tupleRegistrations=function(){Oe("'tupleRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"structRegistrations")||(r.structRegistrations=function(){Oe("'structRegistrations' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"genericPointerToWireType")||(r.genericPointerToWireType=function(){Oe("'genericPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"constNoSmartPtrRawPointerToWireType")||(r.constNoSmartPtrRawPointerToWireType=function(){Oe("'constNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"nonConstNoSmartPtrRawPointerToWireType")||(r.nonConstNoSmartPtrRawPointerToWireType=function(){Oe("'nonConstNoSmartPtrRawPointerToWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_RegisteredPointer")||(r.init_RegisteredPointer=function(){Oe("'init_RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer")||(r.RegisteredPointer=function(){Oe("'RegisteredPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_getPointee")||(r.RegisteredPointer_getPointee=function(){Oe("'RegisteredPointer_getPointee' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_destructor")||(r.RegisteredPointer_destructor=function(){Oe("'RegisteredPointer_destructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_deleteObject")||(r.RegisteredPointer_deleteObject=function(){Oe("'RegisteredPointer_deleteObject' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredPointer_fromWireType")||(r.RegisteredPointer_fromWireType=function(){Oe("'RegisteredPointer_fromWireType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"runDestructor")||(r.runDestructor=function(){Oe("'runDestructor' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"releaseClassHandle")||(r.releaseClassHandle=function(){Oe("'releaseClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"finalizationGroup")||(r.finalizationGroup=function(){Oe("'finalizationGroup' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"detachFinalizer_deps")||(r.detachFinalizer_deps=function(){Oe("'detachFinalizer_deps' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"detachFinalizer")||(r.detachFinalizer=function(){Oe("'detachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"attachFinalizer")||(r.attachFinalizer=function(){Oe("'attachFinalizer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"makeClassHandle")||(r.makeClassHandle=function(){Oe("'makeClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"init_ClassHandle")||(r.init_ClassHandle=function(){Oe("'init_ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle")||(r.ClassHandle=function(){Oe("'ClassHandle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_isAliasOf")||(r.ClassHandle_isAliasOf=function(){Oe("'ClassHandle_isAliasOf' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"throwInstanceAlreadyDeleted")||(r.throwInstanceAlreadyDeleted=function(){Oe("'throwInstanceAlreadyDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_clone")||(r.ClassHandle_clone=function(){Oe("'ClassHandle_clone' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_delete")||(r.ClassHandle_delete=function(){Oe("'ClassHandle_delete' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"deletionQueue")||(r.deletionQueue=function(){Oe("'deletionQueue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_isDeleted")||(r.ClassHandle_isDeleted=function(){Oe("'ClassHandle_isDeleted' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"ClassHandle_deleteLater")||(r.ClassHandle_deleteLater=function(){Oe("'ClassHandle_deleteLater' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"flushPendingDeletes")||(r.flushPendingDeletes=function(){Oe("'flushPendingDeletes' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"delayFunction")||(r.delayFunction=function(){Oe("'delayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"setDelayFunction")||(r.setDelayFunction=function(){Oe("'setDelayFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"RegisteredClass")||(r.RegisteredClass=function(){Oe("'RegisteredClass' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"shallowCopyInternalPointer")||(r.shallowCopyInternalPointer=function(){Oe("'shallowCopyInternalPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"downcastPointer")||(r.downcastPointer=function(){Oe("'downcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"upcastPointer")||(r.upcastPointer=function(){Oe("'upcastPointer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"validateThis")||(r.validateThis=function(){Oe("'validateThis' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"char_0")||(r.char_0=function(){Oe("'char_0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"char_9")||(r.char_9=function(){Oe("'char_9' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"makeLegalFunctionName")||(r.makeLegalFunctionName=function(){Oe("'makeLegalFunctionName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"warnOnce")||(r.warnOnce=function(){Oe("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackSave")||(r.stackSave=function(){Oe("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackRestore")||(r.stackRestore=function(){Oe("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stackAlloc")||(r.stackAlloc=function(){Oe("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"AsciiToString")||(r.AsciiToString=function(){Oe("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToAscii")||(r.stringToAscii=function(){Oe("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF16ToString")||(r.UTF16ToString=function(){Oe("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF16")||(r.stringToUTF16=function(){Oe("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF16")||(r.lengthBytesUTF16=function(){Oe("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"UTF32ToString")||(r.UTF32ToString=function(){Oe("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"stringToUTF32")||(r.stringToUTF32=function(){Oe("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"lengthBytesUTF32")||(r.lengthBytesUTF32=function(){Oe("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"allocateUTF8")||(r.allocateUTF8=function(){Oe("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(r,"allocateUTF8OnStack")||(r.allocateUTF8OnStack=function(){Oe("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),r.writeStackCookie=$,r.checkStackCookie=ee,Object.getOwnPropertyDescriptor(r,"ALLOC_NORMAL")||Object.defineProperty(r,"ALLOC_NORMAL",{configurable:!0,get:function(){Oe("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(r,"ALLOC_STACK")||Object.defineProperty(r,"ALLOC_STACK",{configurable:!0,get:function(){Oe("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Ee=function e(){pr||Er(),pr||(Ee=e)},r.run=Er,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);0{function r(e,r){let t={func:"metrics"};e>=0&&r>=0?(t.sharpness=e,t.glare=r):t.error=e<-.5&&e>-1.5?"Runtime error":e<-1.5&&e>-2.5?"Metrics did not return OK":"Unknown Error Occured",postMessage(t)}function t(e,r){let t={func:"moire"};e>=0&&r>=0?(t.moire=e,t.moireraw=r):t.error=e<-.5&&e>-1.5?"Runtime error":e<-1.5&&e>-2.5?"Moire did not return OK":"Unknown Error Occured",postMessage(t)}function n(r){null!=r&&(e._free(r),r=null)}function i(r){let t=e._malloc(r.length*r.BYTES_PER_ELEMENT);return e.HEAPU8.set(r,t),t}onmessage=a=>{if(a&&a.data)if("metrics"===a.data.func){let t=a.data.data;if(t.imgData&&t.width&&t.height){let a=i(t.imgData);const o=e.ccall("acuantMetrics","number",["number","number","number"],[a,t.width,t.height]);let s=[];for(let r=0;r<2;r++)s[r]=e.getValue(o+4*r,"float");n(a),r(s[0],s[1])}else console.error("missing params"),r(-1,-1)}else if("moire"===a.data.func){let r=a.data.data;if(r.imgData&&r.width&&r.height){let a=i(r.imgData);const o=e.ccall("acuantMoire","number",["number","number","number"],[a,r.width,r.height]);let s=[];for(let r=0;r<2;r++)s[r]=e.getValue(o+4*r,"float");n(a),t(s[0],s[1])}else console.error("missing params"),t(-1,-1)}else console.error("called with no func specified")},postMessage({metricsWorker:"started"})})); \ No newline at end of file diff --git a/public/acuant/11.9.3.508/AcuantPassiveLiveness.min.js b/public/acuant/11.9.3.508/AcuantPassiveLiveness.min.js new file mode 100644 index 00000000000..7cb94fce257 --- /dev/null +++ b/public/acuant/11.9.3.508/AcuantPassiveLiveness.min.js @@ -0,0 +1,64983 @@ +! function (e) { + function t(t) { + for (var n, a, s = t[0], i = t[1], o = 0, l = []; o < s.length; o++) a = s[o], Object.prototype.hasOwnProperty.call(r, a) && r[a] && l.push(r[a][0]), r[a] = 0; + for (n in i) Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]); + for (u && u(t); l.length;) l.shift()() + } + var n = {}, + r = { + 0: 0 + }; + + function a(t) { + if (n[t]) return n[t].exports; + var r = n[t] = { + i: t, + l: !1, + exports: {} + }; + return e[t].call(r.exports, r, r.exports, a), r.l = !0, r.exports + } + a.e = function () { + return Promise.resolve() + }, a.m = e, a.c = n, a.d = function (e, t, n) { + a.o(e, t) || Object.defineProperty(e, t, { + enumerable: !0, + get: n + }) + }, a.r = function (e) { + "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { + value: "Module" + }), Object.defineProperty(e, "__esModule", { + value: !0 + }) + }, a.t = function (e, t) { + if (1 & t && (e = a(e)), 8 & t) return e; + if (4 & t && "object" == typeof e && e && e.__esModule) return e; + var n = Object.create(null); + if (a.r(n), Object.defineProperty(n, "default", { + enumerable: !0, + value: e + }), 2 & t && "string" != typeof e) + for (var r in e) a.d(n, r, function (t) { + return e[t] + }.bind(null, r)); + return n + }, a.n = function (e) { + var t = e && e.__esModule ? function () { + return e.default + } : function () { + return e + }; + return a.d(t, "a", t), t + }, a.o = function (e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }, a.p = "", a.oe = function (e) { + throw console.error(e), e + }; + var s = window.webpackJsonp = window.webpackJsonp || [], + i = s.push.bind(s); + s.push = t, s = s.slice(); + for (var o = 0; o < s.length; o++) t(s[o]); + var u = i; + a(a.s = 129) +}([function (e, t, n) { + "use strict"; + n.d(t, "a", (function () { + return Z + })), n.d(t, "b", (function () { + return P + })), n.d(t, "c", (function () { + return L + })), n.d(t, "d", (function () { + return v + })), n.d(t, "e", (function () { + return l + })), n.d(t, "f", (function () { + return te + })); + let r, a, s = !1; + const i = "undefined" != typeof window ? window : {}, + o = i.document || { + head: {} + }, + u = { + $flags$: 0, + $resourcesUrl$: "", + jmp: e => e(), + raf: e => requestAnimationFrame(e), + ael: (e, t, n, r) => e.addEventListener(t, n, r), + rel: (e, t, n, r) => e.removeEventListener(t, n, r), + ce: (e, t) => new CustomEvent(e, t) + }, + l = e => Promise.resolve(e), + c = (() => { + try { + return new CSSStyleSheet, "function" == typeof (new CSSStyleSheet).replace + } catch (e) {} + return !1 + })(), + h = (e, t, n, r) => { + n && n.map(([n, r, a]) => { + const s = e, + i = p(t, a), + o = d(n); + u.ael(s, r, i, o), (t.$rmListeners$ = t.$rmListeners$ || []).push(() => u.rel(s, r, i, o)) + }) + }, + p = (e, t) => n => { + try { + 256 & e.$flags$ ? e.$lazyInstance$[t](n) : (e.$queuedListeners$ = e.$queuedListeners$ || []).push([t, n]) + } catch (e) { + ae(e) + } + }, + d = e => 0 != (2 & e), + f = new WeakMap, + m = e => { + const t = e.$cmpMeta$, + n = e.$hostElement$, + r = t.$flags$, + a = (t.$tagName$, () => {}), + s = ((e, t, n, r) => { + let a = g(t), + s = oe.get(a); + if (e = 11 === e.nodeType ? e : o, s) + if ("string" == typeof s) { + e = e.head || e; + let t, n = f.get(e); + n || f.set(e, n = new Set), n.has(a) || (t = o.createElement("style"), t.innerHTML = s, e.insertBefore(t, e.querySelector("link")), n && n.add(a)) + } else e.adoptedStyleSheets.includes(s) || (e.adoptedStyleSheets = [...e.adoptedStyleSheets, s]); + return a + })(n.shadowRoot ? n.shadowRoot : n.getRootNode(), t); + 10 & r && (n["s-sc"] = s, n.classList.add(s + "-h")), a() + }, + g = (e, t) => "sc-" + e.$tagName$, + y = {}, + b = e => "object" === (e = typeof e) || "function" === e, + v = (e, t, ...n) => { + let r = null, + a = !1, + s = !1, + i = []; + const o = t => { + for (let n = 0; n < t.length; n++) r = t[n], Array.isArray(r) ? o(r) : null != r && "boolean" != typeof r && ((a = "function" != typeof e && !b(r)) && (r = String(r)), a && s ? i[i.length - 1].$text$ += r : i.push(a ? x(null, r) : r), s = a) + }; + if (o(n), t) { + const e = t.className || t.class; + e && (t.class = "object" != typeof e ? e : Object.keys(e).filter(t => e[t]).join(" ")) + } + if ("function" == typeof e) return e(null === t ? {} : t, i, k); + const u = x(e, null); + return u.$attrs$ = t, i.length > 0 && (u.$children$ = i), u + }, + x = (e, t) => { + const n = { + $flags$: 0, + $tag$: e, + $text$: t, + $elm$: null, + $children$: null, + $attrs$: null + }; + return n + }, + w = {}, + k = { + forEach: (e, t) => e.map(S).forEach(t), + map: (e, t) => e.map(S).map(t).map(I) + }, + S = e => ({ + vattrs: e.$attrs$, + vchildren: e.$children$, + vkey: e.$key$, + vname: e.$name$, + vtag: e.$tag$, + vtext: e.$text$ + }), + I = e => { + if ("function" == typeof e.vtag) { + const t = Object.assign({}, e.vattrs); + return e.vkey && (t.key = e.vkey), e.vname && (t.name = e.vname), v(e.vtag, t, ...e.vchildren || []) + } + const t = x(e.vtag, e.vtext); + return t.$attrs$ = e.vattrs, t.$children$ = e.vchildren, t.$key$ = e.vkey, t.$name$ = e.vname, t + }, + A = (e, t, n, r, a, s) => { + if (n !== r) { + let o = re(e, t), + l = t.toLowerCase(); + if ("class" === t) { + const t = e.classList, + a = N(n), + s = N(r); + t.remove(...a.filter(e => e && !s.includes(e))), t.add(...s.filter(e => e && !a.includes(e))) + } else if ("style" === t) { + for (const t in n) r && null != r[t] || (t.includes("-") ? e.style.removeProperty(t) : e.style[t] = ""); + for (const t in r) n && r[t] === n[t] || (t.includes("-") ? e.style.setProperty(t, r[t]) : e.style[t] = r[t]) + } else if ("ref" === t) r && r(e); + else if (o || "o" !== t[0] || "n" !== t[1]) { + const i = b(r); + if ((o || i && null !== r) && !a) try { + if (e.tagName.includes("-")) e[t] = r; + else { + let a = null == r ? "" : r; + "list" === t ? o = !1 : null != n && e[t] == a || (e[t] = a) + } + } catch (e) {} + null == r || !1 === r ? !1 === r && "" !== e.getAttribute(t) || e.removeAttribute(t) : (!o || 4 & s || a) && !i && (r = !0 === r ? "" : r, e.setAttribute(t, r)) + } else t = "-" === t[2] ? t.slice(3) : re(i, l) ? l.slice(2) : l[2] + t.slice(3), n && u.rel(e, t, n, !1), r && u.ael(e, t, r, !1) + } + }, + E = /\s/, + N = e => e ? e.split(E) : [], + C = (e, t, n, r) => { + const a = 11 === t.$elm$.nodeType && t.$elm$.host ? t.$elm$.host : t.$elm$, + s = e && e.$attrs$ || y, + i = t.$attrs$ || y; + for (r in s) r in i || A(a, r, s[r], void 0, n, t.$flags$); + for (r in i) A(a, r, s[r], i[r], n, t.$flags$) + }, + T = (e, t, n, a) => { + let s, i, u = t.$children$[n], + l = 0; + if (null !== u.$text$) s = u.$elm$ = o.createTextNode(u.$text$); + else if (s = u.$elm$ = o.createElement(u.$tag$), C(null, u, !1), null != r && s["s-si"] !== r && s.classList.add(s["s-si"] = r), u.$children$) + for (l = 0; l < u.$children$.length; ++l) i = T(e, u, l), i && s.appendChild(i); + return s + }, + R = (e, t, n, r, s, i) => { + let o, u = e; + for (u.shadowRoot && u.tagName === a && (u = u.shadowRoot); s <= i; ++s) r[s] && (o = T(null, n, s), o && (r[s].$elm$ = o, u.insertBefore(o, t))) + }, + _ = (e, t, n, r, a) => { + for (; t <= n; ++t)(r = e[t]) && (a = r.$elm$, D(r), a.remove()) + }, + F = (e, t) => e.$tag$ === t.$tag$, + M = (e, t) => { + const n = t.$elm$ = e.$elm$, + r = e.$children$, + a = t.$children$, + s = t.$text$; + null === s ? (C(e, t, !1), null !== r && null !== a ? ((e, t, n, r) => { + let a, s = 0, + i = 0, + o = t.length - 1, + u = t[0], + l = t[o], + c = r.length - 1, + h = r[0], + p = r[c]; + for (; s <= o && i <= c;) null == u ? u = t[++s] : null == l ? l = t[--o] : null == h ? h = r[++i] : null == p ? p = r[--c] : F(u, h) ? (M(u, h), u = t[++s], h = r[++i]) : F(l, p) ? (M(l, p), l = t[--o], p = r[--c]) : F(u, p) ? (M(u, p), e.insertBefore(u.$elm$, l.$elm$.nextSibling), u = t[++s], p = r[--c]) : F(l, h) ? (M(l, h), e.insertBefore(l.$elm$, u.$elm$), l = t[--o], h = r[++i]) : (a = T(t && t[i], n, i), h = r[++i], a && u.$elm$.parentNode.insertBefore(a, u.$elm$)); + s > o ? R(e, null == r[c + 1] ? null : r[c + 1].$elm$, n, r, i, c) : i > c && _(t, s, o) + })(n, r, t, a) : null !== a ? (null !== e.$text$ && (n.textContent = ""), R(n, null, t, a, 0, a.length - 1)) : null !== r && _(r, 0, r.length - 1)) : e.$text$ !== s && (n.data = s) + }, + D = e => { + e.$attrs$ && e.$attrs$.ref && e.$attrs$.ref(null), e.$children$ && e.$children$.map(D) + }, + O = (e, t) => { + const n = e.$hostElement$, + s = e.$vnode$ || x(null, null), + i = (o = t) && o.$tag$ === w ? t : v(null, null, t); + var o; + a = n.tagName, i.$tag$ = null, i.$flags$ |= 4, e.$vnode$ = i, i.$elm$ = s.$elm$ = n.shadowRoot || n, r = n["s-sc"], M(s, i) + }, + L = e => ee(e).$hostElement$, + P = (e, t, n) => { + const r = L(e); + return { + emit: e => $(r, t, { + bubbles: !!(4 & n), + composed: !!(2 & n), + cancelable: !!(1 & n), + detail: e + }) + } + }, + $ = (e, t, n) => { + const r = u.ce(t, n); + return e.dispatchEvent(r), r + }, + B = (e, t) => { + t && !e.$onRenderResolve$ && t["s-p"] && t["s-p"].push(new Promise(t => e.$onRenderResolve$ = t)) + }, + z = (e, t) => { + if (e.$flags$ |= 16, 4 & e.$flags$) return void(e.$flags$ |= 512); + B(e, e.$ancestorComponent$); + return fe(() => U(e, t)) + }, + U = (e, t) => { + const n = (e.$cmpMeta$.$tagName$, () => {}), + r = e.$lazyInstance$; + let a; + return t && (e.$flags$ |= 256, e.$queuedListeners$ && (e.$queuedListeners$.map(([e, t]) => H(r, e, t)), e.$queuedListeners$ = null), a = H(r, "componentWillLoad")), n(), q(a, () => W(e, r, t)) + }, + W = async (e, t, n) => { + const r = e.$hostElement$, + a = (e.$cmpMeta$.$tagName$, () => {}), + s = r["s-rc"]; + n && m(e); + const i = (e.$cmpMeta$.$tagName$, () => {}); + V(e, t), s && (s.map(e => e()), r["s-rc"] = void 0), i(), a(); { + const t = r["s-p"], + n = () => j(e); + 0 === t.length ? n() : (Promise.all(t).then(n), e.$flags$ |= 4, t.length = 0) + } + }, V = (e, t, n) => { + try { + t = t.render(), e.$flags$ &= -17, e.$flags$ |= 2, O(e, t) + + setTimeout(() => { + //alert("setting focus") + let shadowRoot = document.querySelector("#acuant-face-capture-camera").shadowRoot; + let manCap = shadowRoot.querySelector("#manualCaptureSelfieButton"); + let acceptSelfie = shadowRoot.querySelector("#acceptSelfieButton"); + if(manCap){ + manCap.focus(); + } + if(acceptSelfie){ + acceptSelfie.focus(); + shadowRoot.querySelector("#retakeButton").tabIndex = 2; + } + }, 1500); + } catch (t) { + ae(t, e.$hostElement$) + } + return null + }, j = e => { + e.$cmpMeta$.$tagName$; + const t = e.$hostElement$, + n = () => {}, + r = e.$lazyInstance$, + a = e.$ancestorComponent$; + 64 & e.$flags$ ? (H(r, "componentDidUpdate"), n()) : (e.$flags$ |= 64, K(t), H(r, "componentDidLoad"), n(), e.$onReadyResolve$(t), a || G()), e.$onRenderResolve$ && (e.$onRenderResolve$(), e.$onRenderResolve$ = void 0), 512 & e.$flags$ && de(() => z(e, !1)), e.$flags$ &= -517 + }, G = e => { + K(o.documentElement), de(() => $(i, "appload", { + detail: { + namespace: "fas-web-ui-component-camera" + } + })) + }, H = (e, t, n) => { + if (e && e[t]) try { + return e[t](n) + } catch (e) { + ae(e) + } + }, q = (e, t) => e && e.then ? e.then(t) : t(), K = e => e.classList.add("hydrated"), Y = (e, t, n, r) => { + const a = ee(e), + s = a.$instanceValues$.get(t), + i = a.$flags$, + o = a.$lazyInstance$; + var u, l; + u = n, l = r.$members$[t][0], n = null == u || b(u) ? u : 4 & l ? "false" !== u && ("" === u || !!u) : 2 & l ? parseFloat(u) : 1 & l ? String(u) : u, 8 & i && void 0 !== s || n === s || (a.$instanceValues$.set(t, n), o && 2 == (18 & i) && z(a, !1)) + }, X = (e, t, n) => { + if (t.$members$) { + const r = Object.entries(t.$members$), + a = e.prototype; + if (r.map(([e, [r]]) => { + (31 & r || 2 & n && 32 & r) && Object.defineProperty(a, e, { + get() { + return t = e, ee(this).$instanceValues$.get(t); + var t + }, + set(n) { + Y(this, e, n, t) + }, + configurable: !0, + enumerable: !0 + }) + }), 1 & n) { + const t = new Map; + a.attributeChangedCallback = function (e, n, r) { + u.jmp(() => { + const n = t.get(e); + if (this.hasOwnProperty(n)) r = this[n], delete this[n]; + else if (a.hasOwnProperty(n) && "number" == typeof this[n] && this[n] == r) return; + this[n] = (null !== r || "boolean" != typeof this[n]) && r + }) + }, e.observedAttributes = r.filter(([e, t]) => 15 & t[0]).map(([e, n]) => { + const r = n[1] || e; + return t.set(r, e), r + }) + } + } + return e + }, Q = async (e, t, n, r, a) => { + if (0 == (32 & t.$flags$)) { + { + if (t.$flags$ |= 32, (a = ie(n)).then) { + const e = () => {}; + a = await a, e() + } + a.isProxied || (X(a, n, 2), a.isProxied = !0); + const e = (n.$tagName$, () => {}); + t.$flags$ |= 8; + try { + new a(t) + } catch (e) { + ae(e) + } + t.$flags$ &= -9, e() + } + if (a.style) { + let e = a.style; + const t = g(n); + if (!oe.has(t)) { + const r = (n.$tagName$, () => {}); + ((e, t, n) => { + let r = oe.get(e); + c && n ? (r = r || new CSSStyleSheet, r.replace(t)) : r = t, oe.set(e, r) + })(t, e, !!(1 & n.$flags$)), r() + } + } + } + const s = t.$ancestorComponent$, + i = () => z(t, !0); + s && s["s-rc"] ? s["s-rc"].push(i) : i() + }, Z = (e, t = {}) => { + const n = () => {}, + r = [], + a = t.exclude || [], + s = i.customElements, + l = o.head, + c = l.querySelector("meta[charset]"), + p = o.createElement("style"), + d = []; + let f, m = !0; + Object.assign(u, t), u.$resourcesUrl$ = new URL(t.resourcesUrl || "./", o.baseURI).href, e.map(e => { + e[1].map(t => { + const n = { + $flags$: t[0], + $tagName$: t[1], + $members$: t[2], + $listeners$: t[3] + }; + n.$members$ = t[2], n.$listeners$ = t[3]; + const i = n.$tagName$, + o = class extends HTMLElement { + constructor(e) { + super(e), ne(e = this, n), 1 & n.$flags$ && e.attachShadow({ + mode: "open" + }) + } + connectedCallback() { + f && (clearTimeout(f), f = null), m ? d.push(this) : u.jmp(() => (e => { + if (0 == (1 & u.$flags$)) { + const t = ee(e), + n = t.$cmpMeta$, + r = (n.$tagName$, () => {}); + if (1 & t.$flags$) h(e, t, n.$listeners$); + else { + t.$flags$ |= 1; { + let n = e; + for (; n = n.parentNode || n.host;) + if (n["s-p"]) { + B(t, t.$ancestorComponent$ = n); + break + } + } + n.$members$ && Object.entries(n.$members$).map(([t, [n]]) => { + if (31 & n && e.hasOwnProperty(t)) { + const n = e[t]; + delete e[t], e[t] = n + } + }), Q(0, t, n) + } + r() + } + })(this)) + } + disconnectedCallback() { + u.jmp(() => (e => { + if (0 == (1 & u.$flags$)) { + const t = ee(e); + t.$rmListeners$ && (t.$rmListeners$.map(e => e()), t.$rmListeners$ = void 0) + } + })(this)) + } + componentOnReady() { + return ee(this).$onReadyPromise$ + } + }; + n.$lazyBundleId$ = e[0], a.includes(i) || s.get(i) || (r.push(i), s.define(i, X(o, n, 1))) + }) + }), p.innerHTML = r + "{visibility:hidden}.hydrated{visibility:inherit}", p.setAttribute("data-styles", ""), l.insertBefore(p, c ? c.nextSibling : l.firstChild), m = !1, d.length ? d.map(e => e.connectedCallback()) : u.jmp(() => f = setTimeout(G, 30)), n() + }, J = new WeakMap, ee = e => J.get(e), te = (e, t) => J.set(t.$lazyInstance$ = e, t), ne = (e, t) => { + const n = { + $flags$: 0, + $hostElement$: e, + $cmpMeta$: t, + $instanceValues$: new Map + }; + return n.$onReadyPromise$ = new Promise(e => n.$onReadyResolve$ = e), e["s-p"] = [], e["s-rc"] = [], h(e, n, t.$listeners$), J.set(e, n) + }, re = (e, t) => t in e, ae = (e, t) => (0, console.error)(e, t), se = new Map, ie = (e, t, r) => { + const a = e.$tagName$.replace(/-/g, "_"), + s = e.$lazyBundleId$, + i = se.get(s); + return i ? i[a] : n(239)(`./${s}.entry.js`).then(e => (se.set(s, e), e[a]), ae) + }, oe = new Map, ue = [], le = [], ce = (e, t) => n => { + e.push(n), s || (s = !0, t && 4 & u.$flags$ ? de(pe) : u.raf(pe)) + }, he = e => { + for (let t = 0; t < e.length; t++) try { + e[t](performance.now()) + } catch (e) { + ae(e) + } + e.length = 0 + }, pe = () => { + he(ue), he(le), (s = ue.length > 0) && u.raf(pe) + }, de = e => l().then(e), fe = ce(le, !0) +}, function (e, t, n) { + (function (t) { + var n = function (e) { + return e && e.Math == Math && e + }; + e.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof t && t) || function () { + return this + }() || Function("return this")() + }).call(this, n(36)) +}, function (e, t) { + e.exports = function (e) { + try { + return !!e() + } catch (e) { + return !0 + } + } +}, function (e, t, n) { + var r = n(53), + a = Function.prototype, + s = a.call, + i = r && a.bind.bind(s, s); + e.exports = r ? i : function (e) { + return function () { + return s.apply(e, arguments) + } + } +}, function (e, t, n) { + var r = n(1), + a = n(43).f, + s = n(23), + i = n(16), + o = n(70), + u = n(96), + l = n(98); + e.exports = function (e, t) { + var n, c, h, p, d, f = e.target, + m = e.global, + g = e.stat; + if (n = m ? r : g ? r[f] || o(f, {}) : (r[f] || {}).prototype) + for (c in t) { + if (p = t[c], h = e.dontCallGetSet ? (d = a(n, c)) && d.value : n[c], !l(m ? c : f + (g ? "." : "#") + c, e.forced) && void 0 !== h) { + if (typeof p == typeof h) continue; + u(p, h) + }(e.sham || h && h.sham) && s(p, "sham", !0), i(n, c, p, e) + } + } +}, function (e, t, n) { + "use strict"; + var r, a, s, i = n(116), + o = n(9), + u = n(1), + l = n(6), + c = n(11), + h = n(10), + p = n(24), + d = n(28), + f = n(23), + m = n(16), + g = n(33), + y = n(27), + b = n(52), + v = n(32), + x = n(7), + w = n(55), + k = n(21), + S = k.enforce, + I = k.get, + A = u.Int8Array, + E = A && A.prototype, + N = u.Uint8ClampedArray, + C = N && N.prototype, + T = A && b(A), + R = E && b(E), + _ = Object.prototype, + F = u.TypeError, + M = x("toStringTag"), + D = w("TYPED_ARRAY_TAG"), + O = i && !!v && "Opera" !== p(u.opera), + L = !1, + P = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 + }, + $ = { + BigInt64Array: 8, + BigUint64Array: 8 + }, + B = function (e) { + var t = b(e); + if (c(t)) { + var n = I(t); + return n && h(n, "TypedArrayConstructor") ? n.TypedArrayConstructor : B(t) + } + }, + z = function (e) { + if (!c(e)) return !1; + var t = p(e); + return h(P, t) || h($, t) + }; + for (r in P)(s = (a = u[r]) && a.prototype) ? S(s).TypedArrayConstructor = a : O = !1; + for (r in $)(s = (a = u[r]) && a.prototype) && (S(s).TypedArrayConstructor = a); + if ((!O || !l(T) || T === Function.prototype) && (T = function () { + throw F("Incorrect invocation") + }, O)) + for (r in P) u[r] && v(u[r], T); + if ((!O || !R || R === _) && (R = T.prototype, O)) + for (r in P) u[r] && v(u[r].prototype, R); + if (O && b(C) !== R && v(C, R), o && !h(R, M)) + for (r in L = !0, g(R, M, { + configurable: !0, + get: function () { + return c(this) ? this[D] : void 0 + } + }), P) u[r] && f(u[r], D, r); + e.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: O, + TYPED_ARRAY_TAG: L && D, + aTypedArray: function (e) { + if (z(e)) return e; + throw F("Target is not a typed array") + }, + aTypedArrayConstructor: function (e) { + if (l(e) && (!v || y(T, e))) return e; + throw F(d(e) + " is not a typed array constructor") + }, + exportTypedArrayMethod: function (e, t, n, r) { + if (o) { + if (n) + for (var a in P) { + var s = u[a]; + if (s && h(s.prototype, e)) try { + delete s.prototype[e] + } catch (n) { + try { + s.prototype[e] = t + } catch (e) {} + } + } + R[e] && !n || m(R, e, n ? t : O && E[e] || t, r) + } + }, + exportTypedArrayStaticMethod: function (e, t, n) { + var r, a; + if (o) { + if (v) { + if (n) + for (r in P) + if ((a = u[r]) && h(a, e)) try { + delete a[e] + } catch (e) {} + if (T[e] && !n) return; + try { + return m(T, e, n ? t : O && T[e] || t) + } catch (e) {} + } + for (r in P) !(a = u[r]) || a[e] && !n || m(a, e, t) + } + }, + getTypedArrayConstructor: B, + isView: function (e) { + if (!c(e)) return !1; + var t = p(e); + return "DataView" === t || h(P, t) || h($, t) + }, + isTypedArray: z, + TypedArray: T, + TypedArrayPrototype: R + } +}, function (e, t, n) { + var r = n(90), + a = r.all; + e.exports = r.IS_HTMLDDA ? function (e) { + return "function" == typeof e || e === a + } : function (e) { + return "function" == typeof e + } +}, function (e, t, n) { + var r = n(1), + a = n(37), + s = n(10), + i = n(55), + o = n(38), + u = n(89), + l = r.Symbol, + c = a("wks"), + h = u ? l.for || l : l && l.withoutSetter || i; + e.exports = function (e) { + return s(c, e) || (c[e] = o && s(l, e) ? l[e] : h("Symbol." + e)), c[e] + } +}, function (e, t, n) { + var r = n(53), + a = Function.prototype.call; + e.exports = r ? a.bind(a) : function () { + return a.apply(a, arguments) + } +}, function (e, t, n) { + var r = n(2); + e.exports = !r((function () { + return 7 != Object.defineProperty({}, 1, { + get: function () { + return 7 + } + })[1] + })) +}, function (e, t, n) { + var r = n(3), + a = n(15), + s = r({}.hasOwnProperty); + e.exports = Object.hasOwn || function (e, t) { + return s(a(e), t) + } +}, function (e, t, n) { + var r = n(6), + a = n(90), + s = a.all; + e.exports = a.IS_HTMLDDA ? function (e) { + return "object" == typeof e ? null !== e : r(e) || e === s + } : function (e) { + return "object" == typeof e ? null !== e : r(e) + } +}, function (e, t, n) { + var r = n(9), + a = n(91), + s = n(92), + i = n(13), + o = n(41), + u = TypeError, + l = Object.defineProperty, + c = Object.getOwnPropertyDescriptor; + t.f = r ? s ? function (e, t, n) { + if (i(e), t = o(t), i(n), "function" == typeof e && "prototype" === t && "value" in n && "writable" in n && !n.writable) { + var r = c(e, t); + r && r.writable && (e[t] = n.value, n = { + configurable: "configurable" in n ? n.configurable : r.configurable, + enumerable: "enumerable" in n ? n.enumerable : r.enumerable, + writable: !1 + }) + } + return l(e, t, n) + } : l : function (e, t, n) { + if (i(e), t = o(t), i(n), a) try { + return l(e, t, n) + } catch (e) {} + if ("get" in n || "set" in n) throw u("Accessors not supported"); + return "value" in n && (e[t] = n.value), e + } +}, function (e, t, n) { + var r = n(11), + a = String, + s = TypeError; + e.exports = function (e) { + if (r(e)) return e; + throw s(a(e) + " is not an object") + } +}, function (e, t, n) { + var r = n(40); + e.exports = function (e) { + return r(e.length) + } +}, function (e, t, n) { + var r = n(71), + a = Object; + e.exports = function (e) { + return a(r(e)) + } +}, function (e, t, n) { + var r = n(6), + a = n(12), + s = n(94), + i = n(70); + e.exports = function (e, t, n, o) { + o || (o = {}); + var u = o.enumerable, + l = void 0 !== o.name ? o.name : t; + if (r(n) && s(n, l, o), o.global) u ? e[t] = n : i(t, n); + else { + try { + o.unsafe ? e[t] && (u = !0) : delete e[t] + } catch (e) {} + u ? e[t] = n : a.f(e, t, { + value: n, + enumerable: !1, + configurable: !o.nonConfigurable, + writable: !o.nonWritable + }) + } + return e + } +}, function (e, t, n) { + var r = n(1), + a = n(6), + s = function (e) { + return a(e) ? e : void 0 + }; + e.exports = function (e, t) { + return arguments.length < 2 ? s(r[e]) : r[e] && r[e][t] + } +}, function (e, t, n) { + var r = n(46), + a = n(3), + s = n(74), + i = n(15), + o = n(14), + u = n(161), + l = a([].push), + c = function (e) { + var t = 1 == e, + n = 2 == e, + a = 3 == e, + c = 4 == e, + h = 6 == e, + p = 7 == e, + d = 5 == e || h; + return function (f, m, g, y) { + for (var b, v, x = i(f), w = s(x), k = r(m, g), S = o(w), I = 0, A = y || u, E = t ? A(f, S) : n || p ? A(f, 0) : void 0; S > I; I++) + if ((d || I in w) && (v = k(b = w[I], I, x), e)) + if (t) E[I] = v; + else if (v) switch (e) { + case 3: + return !0; + case 5: + return b; + case 6: + return I; + case 2: + l(E, b) + } else switch (e) { + case 4: + return !1; + case 7: + l(E, b) + } + return h ? -1 : a || c ? c : E + } + }; + e.exports = { + forEach: c(0), + map: c(1), + filter: c(2), + some: c(3), + every: c(4), + find: c(5), + findIndex: c(6), + filterReject: c(7) + } +}, function (e, t, n) { + var r = n(6), + a = n(28), + s = TypeError; + e.exports = function (e) { + if (r(e)) return e; + throw s(a(e) + " is not a function") + } +}, function (e, t) { + e.exports = !1 +}, function (e, t, n) { + var r, a, s, i = n(132), + o = n(1), + u = n(11), + l = n(23), + c = n(10), + h = n(69), + p = n(59), + d = n(60), + f = o.TypeError, + m = o.WeakMap; + if (i || h.state) { + var g = h.state || (h.state = new m); + g.get = g.get, g.has = g.has, g.set = g.set, r = function (e, t) { + if (g.has(e)) throw f("Object already initialized"); + return t.facade = e, g.set(e, t), t + }, a = function (e) { + return g.get(e) || {} + }, s = function (e) { + return g.has(e) + } + } else { + var y = p("state"); + d[y] = !0, r = function (e, t) { + if (c(e, y)) throw f("Object already initialized"); + return t.facade = e, l(e, y, t), t + }, a = function (e) { + return c(e, y) ? e[y] : {} + }, s = function (e) { + return c(e, y) + } + } + e.exports = { + set: r, + get: a, + has: s, + enforce: function (e) { + return s(e) ? a(e) : r(e, {}) + }, + getterFor: function (e) { + return function (t) { + var n; + if (!u(t) || (n = a(t)).type !== e) throw f("Incompatible receiver, " + e + " required"); + return n + } + } + } +}, function (e, t, n) { + var r = n(74), + a = n(71); + e.exports = function (e) { + return r(a(e)) + } +}, function (e, t, n) { + var r = n(9), + a = n(12), + s = n(39); + e.exports = r ? function (e, t, n) { + return a.f(e, t, s(1, n)) + } : function (e, t, n) { + return e[t] = n, e + } +}, function (e, t, n) { + var r = n(68), + a = n(6), + s = n(29), + i = n(7)("toStringTag"), + o = Object, + u = "Arguments" == s(function () { + return arguments + }()); + e.exports = r ? s : function (e) { + var t, n, r; + return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof (n = function (e, t) { + try { + return e[t] + } catch (e) {} + }(t = o(e), i)) ? n : u ? s(t) : "Object" == (r = s(t)) && a(t.callee) ? "Arguments" : r + } +}, function (e, t, n) { + var r = n(12).f, + a = n(10), + s = n(7)("toStringTag"); + e.exports = function (e, t, n) { + e && !n && (e = e.prototype), e && !a(e, s) && r(e, s, { + configurable: !0, + value: t + }) + } +}, function (e, t) { + e.exports = "undefined" != typeof navigator && String(navigator.userAgent) || "" +}, function (e, t, n) { + var r = n(3); + e.exports = r({}.isPrototypeOf) +}, function (e, t) { + var n = String; + e.exports = function (e) { + try { + return n(e) + } catch (e) { + return "Object" + } + } +}, function (e, t, n) { + var r = n(3), + a = r({}.toString), + s = r("".slice); + e.exports = function (e) { + return s(a(e), 8, -1) + } +}, function (e, t, n) { + var r = n(31), + a = Math.max, + s = Math.min; + e.exports = function (e, t) { + var n = r(e); + return n < 0 ? a(n + t, 0) : s(n, t) + } +}, function (e, t, n) { + var r = n(137); + e.exports = function (e) { + var t = +e; + return t != t || 0 === t ? 0 : r(t) + } +}, function (e, t, n) { + var r = n(138), + a = n(13), + s = n(139); + e.exports = Object.setPrototypeOf || ("__proto__" in {} ? function () { + var e, t = !1, + n = {}; + try { + (e = r(Object.prototype, "__proto__", "set"))(n, []), t = n instanceof Array + } catch (e) {} + return function (n, r) { + return a(n), s(r), t ? e(n, r) : n.__proto__ = r, n + } + }() : void 0) +}, function (e, t, n) { + var r = n(94), + a = n(12); + e.exports = function (e, t, n) { + return n.get && r(n.get, t, { + getter: !0 + }), n.set && r(n.set, t, { + setter: !0 + }), a.f(e, t, n) + } +}, function (e, t, n) { + var r = n(24), + a = String; + e.exports = function (e) { + if ("Symbol" === r(e)) throw TypeError("Cannot convert a Symbol value to a string"); + return a(e) + } +}, function (e, t, n) { + var r, a = n(13), + s = n(110), + i = n(75), + o = n(60), + u = n(101), + l = n(57), + c = n(59), + h = c("IE_PROTO"), + p = function () {}, + d = function (e) { + return "